[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor/master] Always close old listeners in retry_all_listeners



commit 9f7ed1d04e7afd261898236a70f3cd02697c4a01
Author: rl1987 <rl1987@xxxxxxxxxxxxxxxx>
Date:   Thu Apr 26 11:18:13 2018 +0200

    Always close old listeners in retry_all_listeners
---
 src/app/config/config.c        | 16 +---------------
 src/core/mainloop/connection.c | 13 +++----------
 src/core/mainloop/connection.h |  3 +--
 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 1b1889779..0645bea99 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 9725c3030..1cc83016f 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 3419ee65e..2552808fd 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 c648d236b..a50c852ec 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;



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits