瀏覽代碼

Patch from rovv: when we have no pending streams, choose exits with choose_good_exit_server_general() rather than with circuit_get_unhandled_ports() and friends. Bugfix on 0.1.1.x, at least.

svn:r17091
Nick Mathewson 16 年之前
父節點
當前提交
846e40d193
共有 2 個文件被更改,包括 8 次插入0 次删除
  1. 3 0
      ChangeLog
  2. 5 0
      src/or/circuitbuild.c

+ 3 - 0
ChangeLog

@@ -8,6 +8,9 @@ Changes in version 0.2.1.7-alpha - 2008-10-xx
     - Minor fix in the warning messages when you're having problems
       bootstrapping; also, be more forgiving of bootstrap problems when
       we're still making incremental progress on a given bootstrap phase.
+    - When we're choosing an exit node for a circuit, and we have no pending
+      streams, choose a good general exit rather than one that supports "all
+      the pending streams".  Bugfix on 0.1.1.x. (Fix by rovv.)
 
 
 Changes in version 0.2.1.6-alpha - 2008-09-30

+ 5 - 0
src/or/circuitbuild.c

@@ -1265,6 +1265,11 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
 //               router->nickname, i);
       }
     }); /* End looping over connections. */
+    if (n_pending_connections > 0 && n_supported[i] == 0) {
+      /* Leave best_support at -1 if that's where it is, so we can
+       * distinguish it later. */
+      continue;
+    }
     if (n_supported[i] > best_support) {
       /* If this router is better than previous ones, remember its index
        * and goodness, and start counting how many routers are this good. */