[tor-commits] [tor/maint-0.2.2] we're not reachable if we don't have a routerinfo yet

nickm at torproject.org nickm at torproject.org
Mon Mar 14 21:20:50 UTC 2011


commit 1a9d19e9728c21ffa37f2b751df8e8e97c1835d3
Author: Roger Dingledine <arma at torproject.org>
Date:   Sun Mar 13 15:47:59 2011 -0400

    we're not reachable if we don't have a routerinfo yet
---
 changes/bug1172 |    9 +++++++++
 src/or/router.c |   20 +++++---------------
 2 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/changes/bug1172 b/changes/bug1172
new file mode 100644
index 0000000..3abd743
--- /dev/null
+++ b/changes/bug1172
@@ -0,0 +1,9 @@
+  o Minor bugfixes:
+    - When we restart our relay, we might get a successful connection
+      from the outside before we've started our reachability tests,
+      triggering a warning: "ORPort found reachable, but I have no
+      routerinfo yet. Failing to inform controller of success." This
+      bug was harmless unless Tor is running under a controller
+      like Vidalia, in which case the controller would never get a
+      REACHABILITY_SUCCEEDED status event. Bugfix on 0.1.2.6-alpha;
+      fixes bug 1172.
diff --git a/src/or/router.c b/src/or/router.c
index 75f592d..ba7be3d 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -793,19 +793,14 @@ consider_testing_reachability(int test_or, int test_dir)
 void
 router_orport_found_reachable(void)
 {
-  if (!can_reach_or_port) {
-    routerinfo_t *me = router_get_my_routerinfo();
+  routerinfo_t *me = router_get_my_routerinfo();
+  if (!can_reach_or_port && me) {
     log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
                "the outside. Excellent.%s",
                get_options()->_PublishServerDescriptor != NO_AUTHORITY ?
                  " Publishing server descriptor." : "");
     can_reach_or_port = 1;
     mark_my_descriptor_dirty();
-    if (!me) { /* should never happen */
-      log_warn(LD_BUG, "ORPort found reachable, but I have no routerinfo "
-               "yet. Failing to inform controller of success.");
-      return;
-    }
     control_event_server_status(LOG_NOTICE,
                                 "REACHABILITY_SUCCEEDED ORADDRESS=%s:%d",
                                 me->address, me->or_port);
@@ -816,18 +811,13 @@ router_orport_found_reachable(void)
 void
 router_dirport_found_reachable(void)
 {
-  if (!can_reach_dir_port) {
-    routerinfo_t *me = router_get_my_routerinfo();
+  routerinfo_t *me = router_get_my_routerinfo();
+  if (!can_reach_dir_port && me) {
     log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable "
                "from the outside. Excellent.");
     can_reach_dir_port = 1;
-    if (!me || decide_to_advertise_dirport(get_options(), me->dir_port))
+    if (decide_to_advertise_dirport(get_options(), me->dir_port))
       mark_my_descriptor_dirty();
-    if (!me) { /* should never happen */
-      log_warn(LD_BUG, "DirPort found reachable, but I have no routerinfo "
-               "yet. Failing to inform controller of success.");
-      return;
-    }
     control_event_server_status(LOG_NOTICE,
                                 "REACHABILITY_SUCCEEDED DIRADDRESS=%s:%d",
                                 me->address, me->dir_port);





More information about the tor-commits mailing list