Преглед изворни кода

When we setconf ClientOnly to 1, close any current OR and Dir
listeners. Reported by mwenge.


svn:r13214

Roger Dingledine пре 16 година
родитељ
комит
a49f14d0d4
2 измењених фајлова са 10 додато и 3 уклоњено
  1. 4 0
      ChangeLog
  2. 6 3
      src/or/connection.c

+ 4 - 0
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).

+ 6 - 3
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 <b>disable_all_conns</b> is set, then never open new conns, and
+ * close the existing ones.
+ *
  * Add all old conns that should be closed to <b>replaced_conns</b>.
  * Add all new connections to <b>new_conns</b>.
  */
@@ -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;