-const char jcc_rcs[] = "$Id: jcc.c,v 1.369 2011/10/23 11:22:16 fabiankeil Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.374 2011/11/06 11:58:51 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/jcc.c,v $
* Description : Read the client's request (more precisely the
* client headers) and answer it if necessary.
*
- * Note that since we're not using select() we could get
- * blocked here if a client connected, then didn't say
- * anything!
- *
* Parameters :
* 1 : csp = Current client state (buffers, headers, etc...)
*
*********************************************************************/
static void prepare_csp_for_next_request(struct client_state *csp)
{
+ unsigned int toggled_on_flag_set = (0 != (csp->flags & CSP_FLAG_TOGGLED_ON));
+
csp->content_type = 0;
csp->content_length = 0;
csp->expected_content_length = 0;
csp->fwd = NULL;
}
/* XXX: Store per-connection flags someplace else. */
- csp->flags &= CSP_FLAG_TOGGLED_ON;
- csp->flags |= CSP_FLAG_ACTIVE;
- csp->flags |= CSP_FLAG_REUSED_CLIENT_CONNECTION;
+ csp->flags = (CSP_FLAG_ACTIVE | CSP_FLAG_REUSED_CLIENT_CONNECTION);
+ if (toggled_on_flag_set)
+ {
+ csp->flags |= CSP_FLAG_TOGGLED_ON;
+ }
}
#endif /* def FEATURE_CONNECTION_KEEP_ALIVE */
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)
- {
- 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
+ if (0 != (csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE))
{
- 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)
}
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)))
#ifndef HAVE_RANDOM
privoxy_mutex_init(&rand_mutex);
#endif /* ndef HAVE_RANDOM */
+
#endif /* def MUTEX_LOCKS_AVAILABLE */
}