X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=loadcfg.c;h=efb6c7d2e54eec668558aaefd259bce34f14775e;hp=a2e2cf4941ba42a41ac146cbec7b4e97cd50fa76;hb=03a212cd9ff953a50904e7a970748b5661840426;hpb=c453a6c5675a72d33d7d2e1f499ee6f3a1c2ab02 diff --git a/loadcfg.c b/loadcfg.c index a2e2cf49..efb6c7d2 100644 --- a/loadcfg.c +++ b/loadcfg.c @@ -1,4 +1,4 @@ -const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.80 2008/08/31 15:59:03 fabiankeil Exp $"; +const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.84 2009/01/14 16:14:36 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $ @@ -35,6 +35,24 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.80 2008/08/31 15:59:03 fabiankeil * * Revisions : * $Log: loadcfg.c,v $ + * Revision 1.84 2009/01/14 16:14:36 fabiankeil + * Due to the standard.action file removal, the other action + * files changed their position in config->actions_file[]. + * Update mingw32 kludge accordingly. + * + * Revision 1.83 2008/12/20 14:53:55 fabiankeil + * Add config option socket-timeout to control the time + * Privoxy waits for data to arrive on a socket. Useful + * in case of stale ssh tunnels or when fuzz-testing. + * + * Revision 1.82 2008/11/16 12:43:49 fabiankeil + * Turn keep-alive support into a runtime feature + * that is disabled by setting keep-alive-timeout + * to a negative value. + * + * Revision 1.81 2008/11/13 09:08:42 fabiankeil + * Add new config option: keep-alive-timeout. + * * Revision 1.80 2008/08/31 15:59:03 fabiankeil * There's no reason to let remote toggling support depend * on FEATURE_CGI_EDIT_ACTIONS, so make sure it doesn't. @@ -579,6 +597,7 @@ static struct file_list *current_configfile = NULL; #define hash_permit_access 3587953268ul /* "permit-access" */ #define hash_proxy_info_url 3903079059ul /* "proxy-info-url" */ #define hash_single_threaded 4250084780ul /* "single-threaded" */ +#define hash_socket_timeout 1809001761ul /* "socket-timeout" */ #define hash_split_large_cgi_forms 671658948ul /* "split-large-cgi-forms" */ #define hash_suppress_blocklists 1948693308ul /* "suppress-blocklists" */ #define hash_templdir 11067889ul /* "templdir" */ @@ -780,6 +799,7 @@ struct configuration_spec * load_config(void) config->usermanual = strdup(USER_MANUAL_URL); config->proxy_args = strdup(""); config->forwarded_connect_retries = 0; + config->socket_timeout = 180; config->feature_flags &= ~RUNTIME_FEATURE_CGI_TOGGLE; config->feature_flags &= ~RUNTIME_FEATURE_SPLIT_LARGE_FORMS; config->feature_flags &= ~RUNTIME_FEATURE_ACCEPT_INTERCEPTED_REQUESTS; @@ -1346,12 +1366,12 @@ struct configuration_spec * load_config(void) int timeout = atoi(arg); if (0 <= timeout) { + config->feature_flags |= RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE; keep_alive_timeout = timeout; } else { - log_error(LOG_LEVEL_FATAL, - "Invalid keep-alive-timeout value: %s.", arg); + config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE; } } continue; @@ -1479,6 +1499,25 @@ struct configuration_spec * load_config(void) config->multi_threaded = 0; continue; +/* ************************************************************************* + * socket-timeout numer_of_seconds + * *************************************************************************/ + case hash_socket_timeout : + if (*arg != '\0') + { + int socket_timeout = atoi(arg); + if (0 < socket_timeout) + { + config->socket_timeout = socket_timeout; + } + else + { + log_error(LOG_LEVEL_FATAL, + "Invalid socket-timeout: '%s'", arg); + } + } + continue; + /* ************************************************************************* * split-large-cgi-forms * *************************************************************************/ @@ -1686,9 +1725,6 @@ struct configuration_spec * load_config(void) fclose(configfp); set_debug_level(config->debug); -#ifdef FEATURE_CONNECTION_KEEP_ALIVE - set_keep_alive_timeout(keep_alive_timeout); -#endif freez(config->logfile); @@ -1705,6 +1741,28 @@ struct configuration_spec * load_config(void) } } +#ifdef FEATURE_CONNECTION_KEEP_ALIVE + if (config->feature_flags & RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE) + { + if (config->multi_threaded) + { + set_keep_alive_timeout(keep_alive_timeout); + } + else + { + /* + * While we could use keep-alive without multiple threads + * if we didn't bother with enforcing the connection timeout, + * that might make Tor users sad, even though they shouldn't + * enable the single-threaded option anyway. + */ + config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE; + log_error(LOG_LEVEL_ERROR, + "Config option single-threaded disables connection keep-alive."); + } + } +#endif + if (NULL == config->proxy_args) { log_error(LOG_LEVEL_FATAL, "Out of memory loading config - insufficient memory for config->proxy_args"); @@ -1778,8 +1836,8 @@ struct configuration_spec * load_config(void) /* FIXME: this is a kludge for win32 */ #if defined(_WIN32) && !defined (_WIN_CONSOLE) - g_default_actions_file = config->actions_file[1]; /* FIXME Hope this is default.action */ - g_user_actions_file = config->actions_file[2]; /* FIXME Hope this is user.action */ + g_default_actions_file = config->actions_file[0]; /* FIXME Hope this is default.action */ + g_user_actions_file = config->actions_file[1]; /* FIXME Hope this is user.action */ g_re_filterfile = config->re_filterfile[0]; /* FIXME Hope this is default.filter */ #ifdef FEATURE_TRUST