From: Roger Dingledine Date: Sat, 12 Mar 2005 20:13:38 +0000 (+0000) Subject: change SHUTDOWN_WAIT_LENGTH from a fixed 30 secs to a config option X-Git-Tag: tor-0.1.0.1-rc~142 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe768d1d2a85de42b50a0499d53b9f4a330b4e3b;p=thirdparty%2Ftor.git change SHUTDOWN_WAIT_LENGTH from a fixed 30 secs to a config option svn:r3752 --- diff --git a/src/or/config.c b/src/or/config.c index bea35a199c..76848693c2 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -165,6 +165,7 @@ static config_var_t config_vars[] = { VAR("RecommendedVersions", LINELIST, RecommendedVersions, NULL), VAR("RendNodes", STRING, RendNodes, NULL), VAR("RendExcludeNodes", STRING, RendExcludeNodes, NULL), + VAR("ShutdownWaitLength", UINT, ShutdownWaitLength, "30"), VAR("SocksPort", UINT, SocksPort, "9050"), VAR("SocksBindAddress", LINELIST, SocksBindAddress, NULL), VAR("SocksPolicy", LINELIST, SocksPolicy, NULL), diff --git a/src/or/hibernate.c b/src/or/hibernate.c index cb96bf39d6..a9cbdd6b72 100644 --- a/src/or/hibernate.c +++ b/src/or/hibernate.c @@ -29,8 +29,6 @@ hibernating, phase 2: #define HIBERNATE_STATE_LOWBANDWIDTH 3 #define HIBERNATE_STATE_DORMANT 4 -#define SHUTDOWN_WAIT_LENGTH 30 /* seconds */ - extern long stats_n_seconds_working; /* published uptime */ static int hibernate_state = HIBERNATE_STATE_LIVE; @@ -656,6 +654,7 @@ static int hibernate_soft_limit_reached(void) * connections, but we continue handling old ones. */ static void hibernate_begin(int new_state, time_t now) { connection_t *conn; + or_options_t *options = get_options(); if (new_state == HIBERNATE_STATE_EXITING && hibernate_state != HIBERNATE_STATE_LIVE) { @@ -678,8 +677,8 @@ static void hibernate_begin(int new_state, time_t now) { /* XXX upload rendezvous service descriptors with no intro points */ if (new_state == HIBERNATE_STATE_EXITING) { - log(LOG_NOTICE,"Interrupt: will shut down in %d seconds. Interrupt again to exit now.", SHUTDOWN_WAIT_LENGTH); - hibernate_end_time = time(NULL) + SHUTDOWN_WAIT_LENGTH; + log(LOG_NOTICE,"Interrupt: will shut down in %d seconds. Interrupt again to exit now.", options->ShutdownWaitLength); + hibernate_end_time = time(NULL) + options->ShutdownWaitLength; } else { /* soft limit reached */ hibernate_end_time = interval_end_time; } diff --git a/src/or/or.h b/src/or/or.h index 3c5fbb23d9..c3ceb3d4a1 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -1059,6 +1059,8 @@ typedef struct { int ManageConnections; /**< Boolean: Does Tor attach new connections to * circuits itself (1), or does it let the controller * deal? (0) */ + int ShutdownWaitLength; /**< When we get a SIGINT and we're a server, how + * long do we wait before exiting? */ } or_options_t; #define MAX_SOCKS_REPLY_LEN 1024