diff options
author | rl1987 <rl1987@sdf.lonestar.org> | 2018-04-26 11:18:13 +0200 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-09-12 09:05:39 -0400 |
commit | 9f7ed1d04e7afd261898236a70f3cd02697c4a01 (patch) | |
tree | 39b2f83ffc13e7ff5d525e348d51688e961029c2 /src | |
parent | f04e0bd5d630a2ef3b618f3fe6f05d46358dfb65 (diff) | |
download | tor-9f7ed1d04e7afd261898236a70f3cd02697c4a01.tar.gz tor-9f7ed1d04e7afd261898236a70f3cd02697c4a01.zip |
Always close old listeners in retry_all_listeners
Diffstat (limited to 'src')
-rw-r--r-- | src/app/config/config.c | 16 | ||||
-rw-r--r-- | src/core/mainloop/connection.c | 13 | ||||
-rw-r--r-- | src/core/mainloop/connection.h | 3 | ||||
-rw-r--r-- | src/core/mainloop/main.c | 2 |
4 files changed, 6 insertions, 28 deletions
diff --git a/src/app/config/config.c b/src/app/config/config.c index 1b1889779d..0645bea993 100644 --- a/src/app/config/config.c +++ b/src/app/config/config.c @@ -1397,7 +1397,6 @@ static int options_act_reversible(const or_options_t *old_options, char **msg) { smartlist_t *new_listeners = smartlist_new(); - smartlist_t *replaced_listeners = smartlist_new(); or_options_t *options = get_options_mutable(); int running_tor = options->command == CMD_RUN_TOR; int set_conn_limit = 0; @@ -1481,8 +1480,7 @@ options_act_reversible(const or_options_t *old_options, char **msg) * shutting down. If networking is disabled, this will close all but the * control listeners, but disable those. */ if (!we_are_hibernating()) { - if (retry_all_listeners(replaced_listeners, new_listeners, - options->DisableNetwork) < 0) { + if (retry_all_listeners(new_listeners, options->DisableNetwork) < 0) { *msg = tor_strdup("Failed to bind one of the listener ports."); goto rollback; } @@ -1618,17 +1616,6 @@ options_act_reversible(const or_options_t *old_options, char **msg) "Overwrite the log afterwards.", badness); } - SMARTLIST_FOREACH(replaced_listeners, connection_t *, conn, - { - int marked = conn->marked_for_close; - log_notice(LD_NET, "Closing old %s on %s:%d", - conn_type_to_string(conn->type), conn->address, conn->port); - connection_close_immediate(conn); - if (!marked) { - connection_mark_for_close(conn); - } - }); - if (set_conn_limit) { /* * If we adjusted the conn limit, recompute the OOS threshold too @@ -1682,7 +1669,6 @@ options_act_reversible(const or_options_t *old_options, char **msg) done: smartlist_free(new_listeners); - smartlist_free(replaced_listeners); return r; } diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c index 9725c3030a..1cc83016fd 100644 --- a/src/core/mainloop/connection.c +++ b/src/core/mainloop/connection.c @@ -2802,15 +2802,13 @@ retry_listener_ports(smartlist_t *old_conns, * listeners who are not already open, and only close listeners we no longer * want. * - * Add all old conns that should be closed to <b>replaced_conns</b>. * Add all new connections to <b>new_conns</b>. * * If <b>close_all_noncontrol</b> is true, then we only open control * listeners, and we close all other listeners. */ int -retry_all_listeners(smartlist_t *replaced_conns, - smartlist_t *new_conns, int close_all_noncontrol) +retry_all_listeners(smartlist_t *new_conns, int close_all_noncontrol) { smartlist_t *listeners = smartlist_new(); smartlist_t *replacements = smartlist_new(); @@ -2849,7 +2847,6 @@ retry_all_listeners(smartlist_t *replaced_conns, if (skip) continue; - // XXX: replaced_conns connection_close_immediate(r->old_conn); connection_mark_for_close(r->old_conn); @@ -2872,12 +2869,8 @@ retry_all_listeners(smartlist_t *replaced_conns, SMARTLIST_FOREACH_BEGIN(listeners, connection_t *, conn) { log_notice(LD_NET, "Closing no-longer-configured %s on %s:%d", conn_type_to_string(conn->type), conn->address, conn->port); - if (replaced_conns) { - smartlist_add(replaced_conns, conn); - } else { - connection_close_immediate(conn); - connection_mark_for_close(conn); - } + connection_close_immediate(conn); + connection_mark_for_close(conn); } SMARTLIST_FOREACH_END(conn); smartlist_free(listeners); diff --git a/src/core/mainloop/connection.h b/src/core/mainloop/connection.h index 3419ee65e8..2552808fd8 100644 --- a/src/core/mainloop/connection.h +++ b/src/core/mainloop/connection.h @@ -178,8 +178,7 @@ void log_failed_proxy_connection(connection_t *conn); int get_proxy_addrport(tor_addr_t *addr, uint16_t *port, int *proxy_type, const connection_t *conn); -int retry_all_listeners(smartlist_t *replaced_conns, - smartlist_t *new_conns, +int retry_all_listeners(smartlist_t *new_conns, int close_all_noncontrol); void connection_mark_all_noncontrol_listeners(void); diff --git a/src/core/mainloop/main.c b/src/core/mainloop/main.c index c648d236bb..a50c852ecd 100644 --- a/src/core/mainloop/main.c +++ b/src/core/mainloop/main.c @@ -2338,7 +2338,7 @@ retry_listeners_callback(time_t now, const or_options_t *options) (void)now; (void)options; if (!net_is_disabled()) { - retry_all_listeners(NULL, NULL, 0); + retry_all_listeners(NULL, 0); return 60; } return PERIODIC_EVENT_NO_UPDATE; |