X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=ssl_common.c;h=c7bd538aab8b8fc9c05ed33ce0676f4210e60e1c;hp=1aa13365f4dc61622074f2df8908314ed37b1cf3;hb=36bed44da8971c4b75627ec86cc41163bfde81ae;hpb=f9b953ed3f2bc2de510352e56dfbf91efd19ac7e diff --git a/ssl_common.c b/ssl_common.c index 1aa13365..c7bd538a 100644 --- a/ssl_common.c +++ b/ssl_common.c @@ -1,6 +1,6 @@ /********************************************************************* * - * File : $Source: /cvsroot/ijbswa/current/ssl.c,v $ + * File : $Source: /cvsroot/ijbswa/current/ssl_common.c,v $ * * Purpose : File with TLS/SSL extension. Contains methods for * creating, using and closing TLS/SSL connections that do @@ -91,7 +91,7 @@ extern int server_use_ssl(const struct client_state *csp) * connection, optionally delaying the operation. * * Parameters : - * 1 : ssl = SSL context to send data to + * 1 : ssl_attr = SSL context to send data to * 2 : buf = Pointer to data to be sent * 3 : len = Length of data to be sent to the SSL context * 4 : delay = Delay in milliseconds. @@ -154,7 +154,7 @@ extern int ssl_send_data_delayed(struct ssl_attr* ssl_attr, * SSL connection. Alternative to function flush_socket. * * Parameters : - * 1 : ssl = SSL context to send buffer to + * 1 : ssl_attr = SSL context to send buffer to * 2 : iob = The I/O buffer to flush, usually csp->iob. * * Returns : On success, the number of bytes send are returned (zero @@ -323,6 +323,7 @@ extern void ssl_send_certificate_error(struct client_state *csp) size_t message_len = 0; int ret = 0; struct certs_chain *cert = NULL; + const size_t head_length = 63; /* Header of message with certificate information */ const char message_begin[] = @@ -333,7 +334,7 @@ extern void ssl_send_certificate_error(struct client_state *csp) "Server certificate verification failed\n" "

Server certificate verification failed

\n" "

Privoxy was unable " - "to securely connnect to the destination server.

" + "to securely connect to the destination server.

" "

Reason: "; const char message_end[] = "\r\n\r\n"; char reason[INVALID_CERT_INFO_BUF_SIZE]; @@ -409,6 +410,17 @@ extern void ssl_send_certificate_error(struct client_state *csp) ssl_send_data(ssl_attr, (const unsigned char *)message, strlen(message)); free_certificate_chain(csp); + + log_error(LOG_LEVEL_CRUNCH, "Certificate error: %s: https://%s%s", + reason, csp->http->hostport, csp->http->path); + log_error(LOG_LEVEL_CLF, "%s - - [%T] \"%s https://%s%s %s\" 200 %lu", + csp->ip_addr_str, csp->http->gpc, csp->http->hostport, csp->http->path, + csp->http->version, message_len-head_length); + +#ifdef FEATURE_CONNECTION_KEEP_ALIVE + csp->flags &= ~CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE; + csp->flags |= CSP_FLAG_SERVER_SOCKET_TAINTED; +#endif } @@ -475,12 +487,12 @@ extern char *make_certs_path(const char *conf_dir, const char *file_name, + strlen(file_name) + strlen(suffix) + 2; /* Setting delimiter and editing path length */ -#if defined(_WIN32) || defined(__OS2__) +#if defined(_WIN32) char delim[] = "\\"; path_size += 1; -#else /* ifndef _WIN32 || __OS2__ */ +#else /* ifndef _WIN32 */ char delim[] = "/"; -#endif /* ifndef _WIN32 || __OS2__ */ +#endif /* ifndef _WIN32 */ /* * Building up path from many parts