X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=jcc.c;h=1457206bd23bc60b901588c56150ce69d398fcfa;hp=636ebc05cdd3253e86e4d53959e2910b159d0215;hb=5d8157f124797e48de72ebab4cd74d2c40bccdd8;hpb=63fd0e0d662d4468396748643653848ba3fd4c7e diff --git a/jcc.c b/jcc.c index 636ebc05..1457206b 100644 --- a/jcc.c +++ b/jcc.c @@ -1,4 +1,4 @@ -const char jcc_rcs[] = "$Id: jcc.c,v 1.367 2011/10/16 12:40:34 fabiankeil Exp $"; +const char jcc_rcs[] = "$Id: jcc.c,v 1.370 2011/10/23 11:23:35 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jcc.c,v $ @@ -2515,7 +2515,9 @@ static void serve(struct client_state *csp) && ((csp->flags & CSP_FLAG_SERVER_CONNECTION_KEEP_ALIVE) || (csp->flags & CSP_FLAG_CRUNCHED)) && (csp->cfd != JB_INVALID_SOCKET) - && (csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE); + && ((csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE) + || (csp->config->feature_flags & + RUNTIME_FEATURE_CONNECTION_SHARING)); if (continue_chatting && !(csp->flags & CSP_FLAG_CRUNCHED)) { @@ -2542,22 +2544,24 @@ static void serve(struct client_state *csp) if (continue_chatting) { - unsigned int client_timeout; + unsigned int client_timeout = 1; /* XXX: Use something else here? */ - if (csp->server_connection.sfd != JB_INVALID_SOCKET) + if (0 != (csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE)) { - client_timeout = (unsigned)csp->server_connection.keep_alive_timeout - latency; - log_error(LOG_LEVEL_CONNECT, - "Waiting for the next client request on socket %d. " - "Keeping the server socket %d to %s open.", - csp->cfd, csp->server_connection.sfd, csp->server_connection.host); - } - else - { - client_timeout = 1; /* XXX: Use something else here? */ - log_error(LOG_LEVEL_CONNECT, - "Waiting for the next client request on socket %d. " - "No server socket to keep open.", csp->cfd); + if (csp->server_connection.sfd != JB_INVALID_SOCKET) + { + client_timeout = (unsigned)csp->server_connection.keep_alive_timeout - latency; + log_error(LOG_LEVEL_CONNECT, + "Waiting for the next client request on socket %d. " + "Keeping the server socket %d to %s open.", + csp->cfd, csp->server_connection.sfd, csp->server_connection.host); + } + else + { + log_error(LOG_LEVEL_CONNECT, + "Waiting for the next client request on socket %d. " + "No server socket to keep open.", csp->cfd); + } } if ((csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE) && data_is_available(csp->cfd, (int)client_timeout) @@ -2569,9 +2573,12 @@ static void serve(struct client_state *csp) } else { - log_error(LOG_LEVEL_CONNECT, - "No additional client request received in time on socket %d.", - csp->cfd); + if (0 != (csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE)) + { + log_error(LOG_LEVEL_CONNECT, + "No additional client request received in time on socket %d.", + csp->cfd); + } #ifdef FEATURE_CONNECTION_SHARING if ((csp->config->feature_flags & RUNTIME_FEATURE_CONNECTION_SHARING) && (socket_is_still_alive(csp->server_connection.sfd))) @@ -3088,10 +3095,9 @@ int main(int argc, char **argv) #if !defined(_WIN32) && !defined(__OS2__) && !defined(AMIGA) { int idx; - const int catched_signals[] = { SIGTERM, SIGINT, SIGHUP, 0 }; - const int ignored_signals[] = { SIGPIPE, 0 }; + const int catched_signals[] = { SIGTERM, SIGINT, SIGHUP }; - for (idx = 0; catched_signals[idx] != 0; idx++) + for (idx = 0; idx < SZ(catched_signals); idx++) { #ifdef sun /* FIXME: Is it safe to check for HAVE_SIGSET instead? */ if (sigset(catched_signals[idx], sig_handler) == SIG_ERR) @@ -3103,12 +3109,9 @@ int main(int argc, char **argv) } } - for (idx = 0; ignored_signals[idx] != 0; idx++) + if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { - if (signal(ignored_signals[idx], SIG_IGN) == SIG_ERR) - { - log_error(LOG_LEVEL_FATAL, "Can't set ignore-handler for signal %d: %E", ignored_signals[idx]); - } + log_error(LOG_LEVEL_FATAL, "Can't set ignore-handler for SIGPIPE: %E"); } }