summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-10-14 17:05:52 +0000
committerNick Mathewson <nickm@torproject.org>2008-10-14 17:05:52 +0000
commit846e40d1935eefaa9386e343302128a9db733ebf (patch)
treed4a75c45d18f3032a73ee617e1039eb00c255852
parent3e0f0b48d923332d8444c80f89848f6afde761da (diff)
downloadtor-846e40d1935eefaa9386e343302128a9db733ebf.tar.gz
tor-846e40d1935eefaa9386e343302128a9db733ebf.zip
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
-rw-r--r--ChangeLog3
-rw-r--r--src/or/circuitbuild.c5
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 2a09444420..e5a421a232 100644
--- a/ChangeLog
+++ b/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
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 9470f86986..02414c69ad 100644
--- a/src/or/circuitbuild.c
+++ b/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. */