Browse Source

a potential fix for bug 641.

svn:r14281
Roger Dingledine 17 years ago
parent
commit
1ac11591d2
1 changed files with 4 additions and 1 deletions
  1. 4 1
      src/or/connection_edge.c

+ 4 - 1
src/or/connection_edge.c

@@ -2770,7 +2770,10 @@ connection_ap_can_use_exit(edge_connection_t *conn, routerinfo_t *exit)
    * make sure the exit node of the existing circuit matches exactly.
    */
   if (conn->chosen_exit_name) {
-    if (router_get_by_nickname(conn->chosen_exit_name, 1) != exit) {
+    routerinfo_t *chosen_exit =
+      router_get_by_nickname(conn->chosen_exit_name, 1);
+    if (!chosen_exit || memcpy(chosen_exit->cache_info.identity_digest,
+                               exit->cache_info.identity_digest, DIGEST_LEN)) {
       /* doesn't match */
 //      log_debug(LD_APP,"Requested node '%s', considering node '%s'. No.",
 //                conn->chosen_exit_name, exit->nickname);