-const char gateway_rcs[] = "$Id: gateway.c,v 1.84 2012/02/29 19:35:11 fabiankeil Exp $";
+const char gateway_rcs[] = "$Id: gateway.c,v 1.91 2012/10/21 12:56:38 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/gateway.c,v $
if (!free_slot_found)
{
log_error(LOG_LEVEL_CONNECT,
- "No free slots found to remembering socket for %s:%d. Last slot %d.",
+ "No free slots found to remember socket for %s:%d. Last slot %d.",
connection->host, connection->port, slot);
privoxy_mutex_unlock(&connection_reuse_mutex);
close_socket(connection->sfd);
}
assert(NULL != connection->host);
- reusable_connection[slot].host = strdup(connection->host);
- if (NULL == reusable_connection[slot].host)
- {
- log_error(LOG_LEVEL_FATAL, "Out of memory saving socket.");
- }
+ reusable_connection[slot].host = strdup_or_die(connection->host);
reusable_connection[slot].sfd = connection->sfd;
reusable_connection[slot].port = connection->port;
reusable_connection[slot].in_use = 0;
reusable_connection[slot].timestamp = connection->timestamp;
- reusable_connection->request_sent = connection->request_sent;
- reusable_connection->response_received = connection->response_received;
+ reusable_connection[slot].request_sent = connection->request_sent;
+ reusable_connection[slot].response_received = connection->response_received;
reusable_connection[slot].keep_alive_timeout = connection->keep_alive_timeout;
+ reusable_connection[slot].requests_sent_total = connection->requests_sent_total;
assert(reusable_connection[slot].gateway_host == NULL);
assert(reusable_connection[slot].gateway_port == 0);
reusable_connection[slot].forwarder_type = connection->forwarder_type;
if (NULL != connection->gateway_host)
{
- reusable_connection[slot].gateway_host = strdup(connection->gateway_host);
- if (NULL == reusable_connection[slot].gateway_host)
- {
- log_error(LOG_LEVEL_FATAL, "Out of memory saving gateway_host.");
- }
+ reusable_connection[slot].gateway_host = strdup_or_die(connection->gateway_host);
}
else
{
if (NULL != connection->forward_host)
{
- reusable_connection[slot].forward_host = strdup(connection->forward_host);
- if (NULL == reusable_connection[slot].forward_host)
- {
- log_error(LOG_LEVEL_FATAL, "Out of memory saving forward_host.");
- }
+ reusable_connection[slot].forward_host = strdup_or_die(connection->forward_host);
}
else
{
#endif /* def FEATURE_CONNECTION_SHARING */
-#ifdef FEATURE_CONNECTION_KEEP_ALIVE
/*********************************************************************
*
* Function : mark_connection_closed
closed_connection->request_sent = 0;
closed_connection->response_received = 0;
closed_connection->keep_alive_timeout = 0;
+ closed_connection->requests_sent_total = 0;
closed_connection->forwarder_type = SOCKS_NONE;
freez(closed_connection->gateway_host);
closed_connection->gateway_port = 0;
freez(closed_connection->forward_host);
closed_connection->forward_port = 0;
}
-#endif /* def FEATURE_CONNECTION_KEEP_ALIVE */
#ifdef FEATURE_CONNECTION_SHARING
return FALSE;
}
- if (( (NULL != connection->gateway_host)
+ if (( (NULL != connection->gateway_host)
&& (NULL != fwd->gateway_host)
&& strcmpic(connection->gateway_host, fwd->gateway_host))
&& (connection->gateway_host != fwd->gateway_host))
return FALSE;
}
- if (( (NULL != connection->forward_host)
+ if (( (NULL != connection->forward_host)
&& (NULL != fwd->forward_host)
&& strcmpic(connection->forward_host, fwd->forward_host))
&& (connection->forward_host != fwd->forward_host))
reusable_connection[slot].in_use = TRUE;
sfd = reusable_connection[slot].sfd;
log_error(LOG_LEVEL_CONNECT,
- "Found reusable socket %d for %s:%d in slot %d. "
- "Timestamp made %d seconds ago. Timeout: %d. Latency: %d.",
+ "Found reusable socket %d for %s:%d in slot %d. Timestamp made %d "
+ "seconds ago. Timeout: %d. Latency: %d. Requests served: %d",
sfd, reusable_connection[slot].host, reusable_connection[slot].port,
slot, time(NULL) - reusable_connection[slot].timestamp,
reusable_connection[slot].keep_alive_timeout,
(int)(reusable_connection[slot].response_received -
- reusable_connection[slot].request_sent));
+ reusable_connection[slot].request_sent),
+ reusable_connection[slot].requests_sent_total);
break;
}
}
strncpy(cbuf + client_pos, target_host, sizeof(cbuf) - client_pos);
client_pos += (hostlen & 0xffu);
cbuf[client_pos++] = (char)((target_port >> 8) & 0xff);
- cbuf[client_pos++] = (char)((target_port ) & 0xff);
+ cbuf[client_pos++] = (char)((target_port ) & 0xff);
if (write_socket(sfd, cbuf, client_pos))
{
assert(errstr != NULL);
csp->error_message = strdup(errstr);
- if (server_size == -1)
- {
- /*
- * We didn't read() anything from the server at all.
- * Don't try to log a negative number of characters
- * which could trigger an assert().
- */
- server_size = 0;
- }
- log_error(LOG_LEVEL_CONNECT, "socks5_connect: %s: %N", errstr, server_size, sbuf);
+ log_error(LOG_LEVEL_CONNECT, "socks5_connect: %s", errstr);
close_socket(sfd);
errno = EINVAL;