* We shouldn't be here, unless we catch signals
* in main() that we can't handle here!
*/
- log_error(LOG_LEVEL_FATAL, "sig_handler: exiting on unexpected signal %d", the_signal);
+ log_error(LOG_LEVEL_FATAL,
+ "sig_handler: exiting on unexpected signal %d", the_signal);
}
return;
len = read_socket(csp->cfd, buf, sizeof(buf) - 1);
if (len <= 0)
{
- log_error(LOG_LEVEL_ERROR, "Read the client body failed: %E");
+ log_error(LOG_LEVEL_ERROR,
+ "Reading the client body failed: %E");
break;
}
if (add_to_iob(csp->client_iob, csp->config->buffer_limit, buf, len))
* elsewhere failed or Privoxy is configured
* to only accept proxy requests.
*
- * An error response has already been send
+ * An error response has already been sent
* and we're done here.
*/
return JB_ERR_PARSE;
size_t max_bytes_to_read = to_read < sizeof(buf) ? to_read : sizeof(buf);
log_error(LOG_LEVEL_CONNECT,
- "Waiting for up to %d bytes of request body from the client.",
+ "Waiting for up to %lu bytes of request body from the client.",
max_bytes_to_read);
len = read_socket(csp->cfd, buf, (int)max_bytes_to_read);
if (len <= -1)
if (to_read != 0)
{
- log_error(LOG_LEVEL_CONNECT, "Not enough request body has been read: expected %d more bytes",
+ log_error(LOG_LEVEL_CONNECT, "Not enough request body has been read: expected %llu more bytes",
csp->expected_client_content_length);
return 1;
}
- log_error(LOG_LEVEL_CONNECT, "The last %d bytes of the request body have been read",
+ log_error(LOG_LEVEL_CONNECT, "The last %llu bytes of the request body have been read",
csp->expected_client_content_length);
return 0;
}
csp->expected_client_content_length))
{
log_error(LOG_LEVEL_INFO,
- "Not filtering request body from %s: buffer limit %d will be exceeded "
- "(content length %d)", csp->ip_addr_str, csp->config->buffer_limit,
+ "Not filtering request body from %s: buffer limit %lu will be exceeded "
+ "(content length %lluu)", csp->ip_addr_str, csp->config->buffer_limit,
csp->expected_client_content_length);
return FALSE;
}
size_t max_bytes_to_read = to_read < sizeof(buf) ? to_read : sizeof(buf);
log_error(LOG_LEVEL_CONNECT,
- "Waiting for up to %d bytes of request body from the client.",
+ "Waiting for up to %lu bytes of request body from the client.",
max_bytes_to_read);
len = ssl_recv_data(&(csp->ssl_client_attr), buf,
(unsigned)max_bytes_to_read);
if (to_read != 0)
{
- log_error(LOG_LEVEL_CONNECT, "Not enough request body has been read: expected %d more bytes", to_read);
+ log_error(LOG_LEVEL_CONNECT,
+ "Not enough request body has been read: expected %lu more bytes",
+ to_read);
return 1;
}
- log_error(LOG_LEVEL_CONNECT, "The last %d bytes of the request body have been read",
+ log_error(LOG_LEVEL_CONNECT,
+ "The last %llu bytes of the request body have been read",
csp->expected_client_content_length);
return 0;
}
if (JB_ERR_OK != process_encrypted_request(csp))
{
+ csp->flags &= ~CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE;
return;
}
if ((ssl_send_data_delayed(&(csp->ssl_client_attr),
(const unsigned char *)hdr, strlen(hdr),
get_write_delay(csp)) < 0)
- || (len = ssl_flush_socket(&(csp->ssl_client_attr),
- csp->iob) < 0))
+ || ((len = ssl_flush_socket(&(csp->ssl_client_attr),
+ csp->iob)) < 0))
{
log_error(LOG_LEVEL_CONNECT, "Write header to client failed");
/* NOTREACHED unless FEATURE_GRACEFUL_TERMINATION is defined */
-#ifdef FEATURE_HTTPS_INSPECTION
- /* Clean up. Aim: free all memory (no leaks) */
- ssl_release();
-#endif
-
#ifdef FEATURE_GRACEFUL_TERMINATION
log_error(LOG_LEVEL_INFO, "Graceful termination requested.");
if (i <= 0)
{
- log_error(LOG_LEVEL_ERROR, "Graceful termination failed - still some live clients after 1 minute wait.");
+ log_error(LOG_LEVEL_ERROR, "Graceful termination failed "
+ "- still some live clients after 1 minute wait.");
}
}
sweep();
freez(basedir);
#endif
+#ifdef FEATURE_HTTPS_INSPECTION
+ /*
+ * Only release TLS backed resources if there
+ * are no active connections left.
+ */
+ if (clients->next == NULL)
+ {
+ ssl_release();
+ }
+#endif
+
log_error(LOG_LEVEL_INFO, "Exiting gracefully.");
#if defined(_WIN32) && !defined(_WIN_CONSOLE)