privoxy-log-parser: Highlight: "filtering request body from client 127.0.0.1 (size...
[privoxy.git] / loadcfg.c
index 73fa6e3..dbed0a3 100644 (file)
--- a/loadcfg.c
+++ b/loadcfg.c
@@ -8,7 +8,7 @@
  *                variables it writes to.
  *
  * Copyright   :  Written by and Copyright (C) 2001-2017 the
- *                Privoxy team. http://www.privoxy.org/
+ *                Privoxy team. https://www.privoxy.org/
  *
  *                Based on the Internet Junkbuster originally written
  *                by and Copyright (C) 1997 Anonymous Coders and
 
 #else /* ifndef _WIN32 */
 
-#ifndef __OS2__
 # include <unistd.h>
 # include <sys/wait.h>
-#endif
 # include <sys/time.h>
 # include <sys/stat.h>
 # include <signal.h>
@@ -121,10 +119,9 @@ static struct file_list *current_configfile = NULL;
 /*
  * This takes the "cryptic" hash of each keyword and aliases them to
  * something a little more readable.  This also makes changing the
- * hash values easier if they should change or the hash algorthm changes.
- * Use the included "hash" program to find out what the hash will be
- * for any string supplied on the command line.  (Or just put it in the
- * config file and read the number from the error message in the log).
+ * hash values easier if they should change or the hash algorithm changes.
+ * To find out the hash for a new directive put it in the config file
+ * and read the number from the error message in the log).
  *
  * Please keep this list sorted alphabetically (but with the Windows
  * console and GUI specific options last).
@@ -140,6 +137,7 @@ static struct file_list *current_configfile = NULL;
 #define hash_ca_key_file                 1184187891U /* "ca-key-file" */
 #define hash_ca_password                 1184543320U /* "ca-password" */
 #define hash_certificate_directory       1367994217U /* "certificate-directory" */
+#define hash_cipher_list                 1225729316U /* "cipher-list" */
 #define hash_client_header_order         2701453514U /* "client-header-order" */
 #define hash_client_specific_tag         3353703383U /* "client-specific-tag" */
 #define hash_client_tag_lifetime          647957580U /* "client-tag-lifetime" */
@@ -239,11 +237,9 @@ static void unload_configfile (void * data)
    while (cur_fwd != NULL)
    {
       struct forward_spec * next_fwd = cur_fwd->next;
-      free_pattern_spec(cur_fwd->url);
 
-      freez(cur_fwd->gateway_host);
-      freez(cur_fwd->forward_host);
-      free(cur_fwd);
+      unload_forward_spec(cur_fwd);
+
       cur_fwd = next_fwd;
    }
    config->forward = NULL;
@@ -273,17 +269,19 @@ static void unload_configfile (void * data)
    list_remove_all(config->ordered_client_headers);
 
    freez(config->admin_address);
+   freez(config->cors_allowed_origin);
    freez(config->proxy_info_url);
    freez(config->proxy_args);
    freez(config->usermanual);
    freez(config->trusted_cgi_referrer);
 
-#ifdef FEATURE_HTTPS_FILTERING
+#ifdef FEATURE_HTTPS_INSPECTION
    freez(config->ca_password);
    freez(config->ca_directory);
    freez(config->ca_cert_file);
    freez(config->ca_key_file);
    freez(config->certificate_directory);
+   freez(config->cipher_list);
    freez(config->trusted_cas_file);
 #endif
 
@@ -584,7 +582,7 @@ struct configuration_spec * load_config(void)
    unsigned long linenum = 0;
    int i;
    char *logfile          = NULL;
-#ifdef FEATURE_HTTPS_FILTERING
+#ifdef FEATURE_HTTPS_INSPECTION
    char *ca_cert_file     = NULL;
    char *ca_key_file      = NULL;
    char *ca_directory     = NULL;
@@ -635,7 +633,7 @@ struct configuration_spec * load_config(void)
    config->usermanual                = strdup_or_die(USER_MANUAL_URL);
    config->proxy_args                = strdup_or_die("");
    config->forwarded_connect_retries = 0;
-#ifdef FEATURE_HTTPS_FILTERING
+#ifdef FEATURE_HTTPS_INSPECTION
    config->ca_password               = strdup("");
    ca_cert_file                      = strdup("cacert.crt");
    ca_key_file                       = strdup("cakey.pem");
@@ -1489,8 +1487,6 @@ struct configuration_spec * load_config(void)
              *
              * On platforms were we use poll() we don't have to enforce
              * an upper connection limit either.
-             *
-             * XXX: Do OS/2 etc. belong here as well?
              */
             if (max_client_connections < 1)
             {
@@ -1596,7 +1592,7 @@ struct configuration_spec * load_config(void)
             if (config->receive_buffer_size < BUFFER_SIZE)
             {
                log_error(LOG_LEVEL_INFO,
-                  "receive-buffer-size %d seems low and may cause problems."
+                  "receive-buffer-size %lu seems low and may cause problems."
                   "Consider setting it to at least %d.",
                   config->receive_buffer_size, BUFFER_SIZE);
             }
@@ -1733,7 +1729,7 @@ struct configuration_spec * load_config(void)
             config->usermanual = strdup_or_die(arg);
             break;
 
-#ifdef FEATURE_HTTPS_FILTERING
+#ifdef FEATURE_HTTPS_INSPECTION
 /* *************************************************************************
  * ca private key file password
  * *************************************************************************/
@@ -1746,6 +1742,7 @@ struct configuration_spec * load_config(void)
  * ca-directory directory
  * *************************************************************************/
          case hash_ca_directory:
+            freez(ca_directory);
             ca_directory = make_path(NULL, arg);
 
             if (NULL == ca_directory)
@@ -1760,6 +1757,7 @@ struct configuration_spec * load_config(void)
  * In ca dir by default
  * *************************************************************************/
          case hash_ca_cert_file:
+            freez(ca_cert_file);
             ca_cert_file = make_path(config->ca_directory, arg);
 
             if (NULL == ca_cert_file)
@@ -1774,6 +1772,7 @@ struct configuration_spec * load_config(void)
  * In ca dir by default
  * *************************************************************************/
          case hash_ca_key_file:
+            freez(ca_key_file);
             ca_key_file = make_path(config->ca_directory, arg);
 
             if (NULL == ca_key_file)
@@ -1787,6 +1786,7 @@ struct configuration_spec * load_config(void)
  * certificate-directory directory
  * *************************************************************************/
          case hash_certificate_directory:
+            freez(certificate_directory);
             certificate_directory = make_path(NULL, arg);
 
             if (NULL == certificate_directory)
@@ -1797,10 +1797,20 @@ struct configuration_spec * load_config(void)
 
             break;
 
+/* *************************************************************************
+ * cipher-list list-of-ciphers
+ * *************************************************************************/
+         case hash_cipher_list:
+            freez(config->cipher_list);
+            config->cipher_list = strdup_or_die(arg);
+
+            break;
+
 /* *************************************************************************
  * trusted CAs file name trusted-cas-file
  * *************************************************************************/
          case hash_trusted_cas_file:
+            freez(trusted_cas_file);
             trusted_cas_file = make_path(config->ca_directory, arg);
 
             if (NULL == trusted_cas_file)
@@ -1986,7 +1996,7 @@ struct configuration_spec * load_config(void)
       }
    }
 
-#ifdef FEATURE_HTTPS_FILTERING
+#ifdef FEATURE_HTTPS_INSPECTION
    /*
     * Setting SSL parameters from loaded values into structures
     */