-const char jcc_rcs[] = "$Id: jcc.c,v 1.302 2009/10/09 16:50:50 fabiankeil Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.303 2009/10/29 16:55:29 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/jcc.c,v $
&& !(csp->flags & CSP_FLAG_SERVER_SOCKET_TAINTED)
&& (csp->cfd != JB_INVALID_SOCKET)
&& (csp->server_connection.sfd != JB_INVALID_SOCKET)
- && socket_is_still_usable(csp->server_connection.sfd)
- && (latency < csp->server_connection.keep_alive_timeout);
+ && socket_is_still_usable(csp->server_connection.sfd);
if (continue_chatting)
{
- unsigned int client_timeout;
-
if (!(csp->flags & CSP_FLAG_SERVER_KEEP_ALIVE_TIMEOUT_SET))
{
- log_error(LOG_LEVEL_CONNECT, "The server didn't specify how long "
- "the connection will stay open. Assume it's only a second.");
- csp->server_connection.keep_alive_timeout = 1;
+ csp->server_connection.keep_alive_timeout = csp->config->default_server_timeout;
+ log_error(LOG_LEVEL_CONNECT,
+ "The server didn't specify how long the connection will stay open. "
+ "Assumed timeout is: %u.", csp->server_connection.keep_alive_timeout);
}
+ continue_chatting = (latency < csp->server_connection.keep_alive_timeout);
+ }
+
+ if (continue_chatting)
+ {
+ unsigned int client_timeout;
client_timeout = (unsigned)csp->server_connection.keep_alive_timeout - latency;
-const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.105 2009/09/06 14:15:46 fabiankeil Exp $";
+const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.106 2009/09/10 14:45:17 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $
#define hash_confdir 1978389ul /* "confdir" */
#define hash_connection_sharing 1348841265ul /* "connection-sharing" */
#define hash_debug 78263ul /* "debug" */
+#define hash_default_server_timeout 2530089913ul /* "default-server-timeout" */
#define hash_deny_access 1227333715ul /* "deny-access" */
#define hash_enable_edit_actions 2517097536ul /* "enable-edit-actions" */
#define hash_enable_remote_toggle 2979744683ul /* "enable-remote-toggle" */
config->max_client_connections = 0;
config->socket_timeout = 300; /* XXX: Should be a macro. */
#ifdef FEATURE_CONNECTION_KEEP_ALIVE
+ config->default_server_timeout = 0;
config->keep_alive_timeout = DEFAULT_KEEP_ALIVE_TIMEOUT;
config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE;
config->feature_flags &= ~RUNTIME_FEATURE_CONNECTION_SHARING;
config->debug |= atoi(arg);
break;
+/* *************************************************************************
+ * default-server-timeout timeout
+ * *************************************************************************/
+#ifdef FEATURE_CONNECTION_KEEP_ALIVE
+ case hash_default_server_timeout :
+ if (*arg != '\0')
+ {
+ int timeout = atoi(arg);
+ if (0 < timeout)
+ {
+ config->default_server_timeout = (unsigned int)timeout;
+ }
+ else
+ {
+ log_error(LOG_LEVEL_FATAL,
+ "Invalid default-server-timeout value: %s", arg);
+ }
+ }
+ break;
+#endif
+
/* *************************************************************************
* deny-access source-ip[/significant-bits] [dest-ip[/significant-bits]]
* *************************************************************************/
}
}
+#ifdef FEATURE_CONNECTION_KEEP_ALIVE
+ if (config->default_server_timeout > config->keep_alive_timeout)
+ {
+ log_error(LOG_LEVEL_ERROR,
+ "Reducing the default-server-timeout from %d to the keep-alive-timeout %d.",
+ config->default_server_timeout, config->keep_alive_timeout);
+ config->default_server_timeout = config->keep_alive_timeout;
+ }
+#endif /* def FEATURE_CONNECTION_KEEP_ALIVE */
+
#ifdef FEATURE_CONNECTION_SHARING
if (config->feature_flags & RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE)
{
#ifndef PROJECT_H_INCLUDED
#define PROJECT_H_INCLUDED
/** Version string. */
-#define PROJECT_H_VERSION "$Id: project.h,v 1.151 2009/10/04 15:45:11 fabiankeil Exp $"
+#define PROJECT_H_VERSION "$Id: project.h,v 1.152 2009/11/08 17:54:09 ler762 Exp $"
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/project.h,v $
#ifdef FEATURE_CONNECTION_KEEP_ALIVE
/* Maximum number of seconds after which an open connection will no longer be reused. */
unsigned int keep_alive_timeout;
+
+ /* Assumed server-side keep alive timeout if none is specified. */
+ unsigned int default_server_timeout;
#endif
/** All options from the config file, HTML-formatted. */