]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Install correct incoming cell handlers on reachability testing channels
authorAndrea Shepard <andrea@torproject.org>
Fri, 12 Oct 2012 07:45:31 +0000 (00:45 -0700)
committerNick Mathewson <nickm@torproject.org>
Fri, 12 Oct 2012 14:02:13 +0000 (10:02 -0400)
Fix for bug 7086.

src/or/dirserv.c

index ac7b122e68b13fea6484c11e8f191c9c6c7f3ff7..ec4ecfa4268f79a7e13a41b722b58e429a230026 100644 (file)
@@ -10,6 +10,7 @@
 #include "confparse.h"
 #include "channel.h"
 #include "channeltls.h"
+#include "command.h"
 #include "connection.h"
 #include "connection_or.h"
 #include "control.h"
@@ -3398,6 +3399,7 @@ dirserv_should_launch_reachability_test(const routerinfo_t *ri,
 void
 dirserv_single_reachability_test(time_t now, routerinfo_t *router)
 {
+  channel_t *chan = NULL;
   node_t *node = NULL;
   tor_addr_t router_addr;
   (void) now;
@@ -3410,8 +3412,9 @@ dirserv_single_reachability_test(time_t now, routerinfo_t *router)
   log_debug(LD_OR,"Testing reachability of %s at %s:%u.",
             router->nickname, router->address, router->or_port);
   tor_addr_from_ipv4h(&router_addr, router->addr);
-  channel_tls_connect(&router_addr, router->or_port,
-                      router->cache_info.identity_digest);
+  chan = channel_tls_connect(&router_addr, router->or_port,
+                             router->cache_info.identity_digest);
+  if (chan) command_setup_channel(chan);
 
   /* Possible IPv6. */
   if (get_options()->AuthDirHasIPv6Connectivity == 1 &&
@@ -3421,8 +3424,9 @@ dirserv_single_reachability_test(time_t now, routerinfo_t *router)
               router->nickname,
               tor_addr_to_str(addrstr, &router->ipv6_addr, sizeof(addrstr), 1),
               router->ipv6_orport);
-    channel_tls_connect(&router->ipv6_addr, router->ipv6_orport,
-                        router->cache_info.identity_digest);
+    chan = channel_tls_connect(&router->ipv6_addr, router->ipv6_orport,
+                               router->cache_info.identity_digest);
+    if (chan) command_setup_channel(chan);
   }
 }