X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=loadcfg.c;h=dbed0a3807092cfc056f9f2500dd060be66b04fb;hp=d7401521b394c9a3499d6daa9fa3077718db5e3b;hb=e52674334610f4c2a1eb22b095c126527705f314;hpb=bd7800c807e535d21222fa41cb29537cb865b170 diff --git a/loadcfg.c b/loadcfg.c index d7401521..dbed0a38 100644 --- a/loadcfg.c +++ b/loadcfg.c @@ -62,10 +62,8 @@ #else /* ifndef _WIN32 */ -#ifndef __OS2__ # include # include -#endif # include # include # include @@ -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,6 +269,7 @@ 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); @@ -284,6 +281,7 @@ static void unload_configfile (void * data) freez(config->ca_cert_file); freez(config->ca_key_file); freez(config->certificate_directory); + freez(config->cipher_list); freez(config->trusted_cas_file); #endif @@ -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); } @@ -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)