From a49f14d0d499615f7729fb20fa8e6fe52791810b Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Mon, 21 Jan 2008 21:21:19 +0000 Subject: [PATCH] When we setconf ClientOnly to 1, close any current OR and Dir listeners. Reported by mwenge. svn:r13214 --- ChangeLog | 4 ++++ src/or/connection.c | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 89b291cf0b..7a9b1c0cec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,6 +15,10 @@ Changes in version 0.2.0.18-alpha - 2008-01-?? the request isn't encrypted. - Make "ClientOnly 1" config option disable directory ports too. + o Minor bugfixes: + - When we setconf ClientOnly to 1, close any current OR and Dir + listeners. Reported by mwenge. + Changes in version 0.2.0.17-alpha - 2008-01-17 Tor 0.2.0.17-alpha makes the tarball build cleanly again (whoops). diff --git a/src/or/connection.c b/src/or/connection.c index 31c9c170f0..5c0ee12fd1 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -1177,6 +1177,9 @@ connection_connect(connection_t *conn, const char *address, * only close listeners that are no longer wanted. Existing listeners * that are still configured are not touched. * + * If disable_all_conns is set, then never open new conns, and + * close the existing ones. + * * Add all old conns that should be closed to replaced_conns. * Add all new connections to new_conns. */ @@ -1185,7 +1188,7 @@ retry_listeners(int type, config_line_t *cfg, int port_option, const char *default_addr, smartlist_t *replaced_conns, smartlist_t *new_conns, - int never_open_conns, + int disable_all_conns, int socket_family) { smartlist_t *launch = smartlist_create(), *conns; @@ -1251,7 +1254,7 @@ retry_listeners(int type, config_line_t *cfg, tor_assert(0); } }); - if (! line) { + if (!line || disable_all_conns) { /* This one isn't configured. Close it. */ log_notice(LD_NET, "Closing no-longer-configured %s on %s:%d", conn_type_to_string(type), conn->address, conn->port); @@ -1273,7 +1276,7 @@ retry_listeners(int type, config_line_t *cfg, /* Now open all the listeners that are configured but not opened. */ r = 0; - if (!never_open_conns) { + if (!disable_all_conns) { SMARTLIST_FOREACH(launch, config_line_t *, cfg_line, { char *address = NULL;