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),
#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;
* 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) {
/* 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;
}
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