diff options
author | Roger Dingledine <arma@torproject.org> | 2011-03-13 15:47:59 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2011-03-13 15:47:59 -0400 |
commit | 1a9d19e9728c21ffa37f2b751df8e8e97c1835d3 (patch) | |
tree | 654b11c2b1f97870642e81c71789687b2b0549e9 | |
parent | 151ab614421eed48ba2f39518695b8ee08206904 (diff) | |
download | tor-1a9d19e9728c21ffa37f2b751df8e8e97c1835d3.tar.gz tor-1a9d19e9728c21ffa37f2b751df8e8e97c1835d3.zip |
we're not reachable if we don't have a routerinfo yet
-rw-r--r-- | changes/bug1172 | 9 | ||||
-rw-r--r-- | 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 0000000000..3abd7437f5 --- /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 75f592d9e6..ba7be3d7d7 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); |