-const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.97 2009/04/17 11:45:19 fabiankeil Exp $";
+const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.100 2009/05/10 10:19:23 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $
*
* Revisions :
* $Log: loadcfg.c,v $
+ * Revision 1.100 2009/05/10 10:19:23 fabiankeil
+ * Reenable server-side-only keep-alive support, but only share
+ * outgoing connections if the connection-sharing option is set.
+ *
+ * Revision 1.99 2009/05/10 10:12:30 fabiankeil
+ * Initial keep-alive support for the client socket.
+ * Temporarily disable the server-side-only keep-alive code.
+ *
+ * Revision 1.98 2009/04/24 15:29:43 fabiankeil
+ * Allow to limit the number of of client connections.
+ *
* Revision 1.97 2009/04/17 11:45:19 fabiankeil
* Replace HAVE_GETADDRINFO and HAVE_GETNAMEINFO macros
* with HAVE_RFC2553 macro. Original patch by Petr Pisar.
#define hash_allow_cgi_request_crunching 258915987ul /* "allow-cgi-request-crunching" */
#define hash_buffer_limit 1881726070ul /* "buffer-limit */
#define hash_confdir 1978389ul /* "confdir" */
+#define hash_connection_sharing 1348841265ul /* "connection-sharing" */
#define hash_debug 78263ul /* "debug" */
#define hash_deny_access 1227333715ul /* "deny-access" */
#define hash_enable_edit_actions 2517097536ul /* "enable-edit-actions" */
unsigned long linenum = 0;
int i;
char *logfile = NULL;
-#ifdef FEATURE_CONNECTION_KEEP_ALIVE
- int keep_alive_timeout = DEFAULT_KEEP_ALIVE_TIMEOUT;
-#endif
if (!check_file_changed(current_configfile, configfile, &fs))
{
config->forwarded_connect_retries = 0;
config->max_client_connections = 0;
config->socket_timeout = 300; /* XXX: Should be a macro. */
+#ifdef FEATURE_CONNECTION_KEEP_ALIVE
+ config->keep_alive_timeout = DEFAULT_KEEP_ALIVE_TIMEOUT;
+ config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE;
+ config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_SHARING;
+#endif
config->feature_flags &= ~RUNTIME_FEATURE_CGI_TOGGLE;
config->feature_flags &= ~RUNTIME_FEATURE_SPLIT_LARGE_FORMS;
config->feature_flags &= ~RUNTIME_FEATURE_ACCEPT_INTERCEPTED_REQUESTS;
config->confdir = make_path( NULL, arg);
break;
+/* *************************************************************************
+ * connection-sharing (0|1)
+ * *************************************************************************/
+#ifdef FEATURE_CONNECTION_KEEP_ALIVE
+ case hash_connection_sharing :
+ if ((*arg != '\0') && (0 != atoi(arg)))
+ {
+ config->feature_flags |= RUNTIME_FEATURE_CONNECTION_SHARING;
+ }
+ else
+ {
+ config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_SHARING;
+ }
+ break;
+#endif
+
/* *************************************************************************
* debug n
* Specifies debug level, multiple values are ORed together.
if (0 <= timeout)
{
config->feature_flags |= RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE;
- keep_alive_timeout = timeout;
+ config->keep_alive_timeout = (unsigned int)timeout;
}
else
{
{
if (config->multi_threaded)
{
- set_keep_alive_timeout(keep_alive_timeout);
+ set_keep_alive_timeout(config->keep_alive_timeout);
}
else
{
* 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.
+ *
+ * XXX: We could still use Proxy-Connection: keep-alive.
*/
config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE;
log_error(LOG_LEVEL_ERROR,