pcrs: Request JIT compilation if it's supported
[privoxy.git] / ssl_common.c
index 1aa1336..c7bd538 100644 (file)
@@ -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)
       "<html><head><title>Server certificate verification failed</title></head>\n"
       "<body><h1>Server certificate verification failed</h1>\n"
       "<p><a href=\"https://" CGI_SITE_2_HOST "/\">Privoxy</a> was unable "
-      "to securely connnect to the destination server.</p>"
+      "to securely connect to the destination server.</p>"
       "<p>Reason: ";
    const char message_end[] = "</body></html>\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