X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=jcc.c;h=46ff1a28c1c859516fa90ffad6086e66eedd880c;hp=75be2d2614d54d2fd5c4999d3122385ff5a22822;hb=9ca4d4015e89dcbe69c79bb60bc81ad9dc1b0b98;hpb=669a1c8df92ea457ccc3ebb2fb7cce81a4e80a9a diff --git a/jcc.c b/jcc.c index 75be2d26..46ff1a28 100644 --- a/jcc.c +++ b/jcc.c @@ -2123,7 +2123,6 @@ static int send_https_request(struct client_state *csp) "Failed sending encrypted request headers to: %s: %E", csp->http->hostport); mark_server_socket_tainted(csp); - close_client_and_server_ssl_connections(csp); return 1; } @@ -2245,6 +2244,8 @@ static jb_err process_encrypted_request(struct client_state *csp) if (err != JB_ERR_OK) { /* XXX: Also used for JB_ERR_MEMORY */ + log_error(LOG_LEVEL_ERROR, "Failed to receive encrypted request: %s", + jb_err_to_string(err)); ssl_send_data(&(csp->mbedtls_client_attr.ssl), (const unsigned char *)CHEADER, strlen(CHEADER)); return err; @@ -2254,6 +2255,7 @@ static jb_err process_encrypted_request(struct client_state *csp) request_line = get_header(csp->client_iob); if (request_line == NULL) { + log_error(LOG_LEVEL_ERROR, "Failed to get the encrypted request line"); ssl_send_data(&(csp->mbedtls_client_attr.ssl), (const unsigned char *)CHEADER, strlen(CHEADER)); return JB_ERR_PARSE; @@ -2317,6 +2319,8 @@ static jb_err process_encrypted_request(struct client_state *csp) * Our attempts to get the request destination * elsewhere failed. */ + log_error(LOG_LEVEL_ERROR, + "Failed to get the encrypted request destination"); ssl_send_data(&(csp->mbedtls_client_attr.ssl), (const unsigned char *)CHEADER, strlen(CHEADER)); return JB_ERR_PARSE; @@ -2521,62 +2525,60 @@ static void handle_established_connection(struct client_state *csp) } #endif /* FEATURE_CONNECTION_KEEP_ALIVE */ - { #ifdef HAVE_POLL - poll_fds[0].fd = csp->cfd; + poll_fds[0].fd = csp->cfd; #ifdef FEATURE_CONNECTION_KEEP_ALIVE - if (!watch_client_socket) - { - /* - * Ignore incoming data, but still watch out - * for disconnects etc. These flags are always - * implied anyway but explicitly setting them - * doesn't hurt. - */ - poll_fds[0].events = POLLERR|POLLHUP; - } - else + if (!watch_client_socket) + { + /* + * Ignore incoming data, but still watch out + * for disconnects etc. These flags are always + * implied anyway but explicitly setting them + * doesn't hurt. + */ + poll_fds[0].events = POLLERR|POLLHUP; + } + else #endif - { - poll_fds[0].events = POLLIN; - } - poll_fds[1].fd = csp->server_connection.sfd; - poll_fds[1].events = POLLIN; - n = poll(poll_fds, 2, csp->config->socket_timeout * 1000); + { + poll_fds[0].events = POLLIN; + } + poll_fds[1].fd = csp->server_connection.sfd; + poll_fds[1].events = POLLIN; + n = poll(poll_fds, 2, csp->config->socket_timeout * 1000); #else - timeout.tv_sec = csp->config->socket_timeout; - timeout.tv_usec = 0; - n = select((int)maxfd + 1, &rfds, NULL, NULL, &timeout); + timeout.tv_sec = csp->config->socket_timeout; + timeout.tv_usec = 0; + n = select((int)maxfd + 1, &rfds, NULL, NULL, &timeout); #endif /* def HAVE_POLL */ - /*server or client not responding in timeout */ - if (n == 0) + /*server or client not responding in timeout */ + if (n == 0) + { + log_error(LOG_LEVEL_CONNECT, "Socket timeout %d reached: %s", + csp->config->socket_timeout, http->url); + if ((byte_count == 0) && (http->ssl == 0)) { - log_error(LOG_LEVEL_CONNECT, "Socket timeout %d reached: %s", - csp->config->socket_timeout, http->url); - if ((byte_count == 0) && (http->ssl == 0)) - { - send_crunch_response(csp, error_response(csp, "connection-timeout")); - } - mark_server_socket_tainted(csp); + send_crunch_response(csp, error_response(csp, "connection-timeout")); + } + mark_server_socket_tainted(csp); #ifdef FEATURE_HTTPS_INSPECTION - close_client_and_server_ssl_connections(csp); + close_client_and_server_ssl_connections(csp); #endif - return; - } - else if (n < 0) - { + return; + } + else if (n < 0) + { #ifdef HAVE_POLL - log_error(LOG_LEVEL_ERROR, "poll() failed!: %E"); + log_error(LOG_LEVEL_ERROR, "poll() failed!: %E"); #else - log_error(LOG_LEVEL_ERROR, "select() failed!: %E"); + log_error(LOG_LEVEL_ERROR, "select() failed!: %E"); #endif - mark_server_socket_tainted(csp); + mark_server_socket_tainted(csp); #ifdef FEATURE_HTTPS_INSPECTION - close_client_and_server_ssl_connections(csp); + close_client_and_server_ssl_connections(csp); #endif - return; - } + return; } /* @@ -2714,9 +2716,6 @@ static void handle_established_connection(struct client_state *csp) { log_error(LOG_LEVEL_ERROR, "write to: %s failed: %E", http->host); mark_server_socket_tainted(csp); -#ifdef FEATURE_HTTPS_INSPECTION - close_client_and_server_ssl_connections(csp); -#endif return; } } @@ -2957,9 +2956,6 @@ static void handle_established_connection(struct client_state *csp) freez(hdr); freez(p); mark_server_socket_tainted(csp); -#ifdef FEATURE_HTTPS_INSPECTION - close_client_and_server_ssl_connections(csp); -#endif return; } } @@ -3063,9 +3059,6 @@ static void handle_established_connection(struct client_state *csp) "Flush header and buffers to client failed: %E"); freez(hdr); mark_server_socket_tainted(csp); -#ifdef FEATURE_HTTPS_INSPECTION - close_client_and_server_ssl_connections(csp); -#endif return; } } @@ -3108,9 +3101,6 @@ static void handle_established_connection(struct client_state *csp) { log_error(LOG_LEVEL_ERROR, "write to client failed: %E"); mark_server_socket_tainted(csp); -#ifdef FEATURE_HTTPS_INSPECTION - close_client_and_server_ssl_connections(csp); -#endif return; } } @@ -3385,9 +3375,6 @@ static void handle_established_connection(struct client_state *csp) */ freez(hdr); mark_server_socket_tainted(csp); -#ifdef FEATURE_HTTPS_INSPECTION - close_client_and_server_ssl_connections(csp); -#endif return; } }