[tor-commits] [tor/master] Avoid spurious local-port warnings

nickm at torproject.org nickm at torproject.org
Thu Jan 3 03:01:05 UTC 2013


commit ee4182612f7f06ae09531bf75e9b84ea30871278
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Jan 2 10:37:03 2013 -0500

    Avoid spurious local-port warnings
    
    Our old warn_nonlocal_client_ports() would give a bogus warning for
    every nonlocal port every time it parsed any ports at all.  So if it
    parsed a nonlocal socksport, it would complain that it had a nonlocal
    socksport...and then turn around and complain about the nonlocal
    socksport again, calling it a nonlocal transport or nonlocal dnsport,
    if it had any of those.
    
    Fixes bug 7836; bugfix on 0.2.3.3-alpha.
---
 changes/bug7836 |    5 +++++
 src/or/config.c |   13 ++++++++-----
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/changes/bug7836 b/changes/bug7836
new file mode 100644
index 0000000..730d807
--- /dev/null
+++ b/changes/bug7836
@@ -0,0 +1,5 @@
+  o Minor bugfixes:
+    - Avoid spurious warnings when configuring multiple client ports of
+      which only some are nonlocal. Previously, we had claimed that some
+      were nonlocal when in fact they weren't. Fixes bug 7836; bugfix on
+      0.2.3.3-alpha.
diff --git a/src/or/config.c b/src/or/config.c
index 2947d1c..6086621 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -4633,12 +4633,15 @@ port_cfg_free(port_cfg_t *port)
   tor_free(port);
 }
 
-/** Warn for every port in <b>ports</b> that is on a publicly routable
- * address. */
+/** Warn for every port in <b>ports</b> of type <b>listener_type</b> that is
+ * on a publicly routable address. */
 static void
-warn_nonlocal_client_ports(const smartlist_t *ports, const char *portname)
+warn_nonlocal_client_ports(const smartlist_t *ports, const char *portname,
+                           int listener_type)
 {
   SMARTLIST_FOREACH_BEGIN(ports, const port_cfg_t *, port) {
+    if (port->type != listener_type)
+      continue;
     if (port->is_unix_addr) {
       /* Unix sockets aren't accessible over a network. */
     } else if (!tor_addr_is_internal(&port->addr, 1)) {
@@ -4835,7 +4838,7 @@ parse_port_config(smartlist_t *out,
       if (is_control)
         warn_nonlocal_controller_ports(out, forbid_nonlocal);
       else
-        warn_nonlocal_client_ports(out, portname);
+        warn_nonlocal_client_ports(out, portname, listener_type);
     }
     return 0;
   } /* end if (listenaddrs) */
@@ -5101,7 +5104,7 @@ parse_port_config(smartlist_t *out,
     if (is_control)
       warn_nonlocal_controller_ports(out, forbid_nonlocal);
     else
-      warn_nonlocal_client_ports(out, portname);
+      warn_nonlocal_client_ports(out, portname, listener_type);
   }
 
   if (got_zero_port && got_nonzero_port) {



More information about the tor-commits mailing list