mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Always close old listeners in retry_all_listeners
This commit is contained in:
+1
-15
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user