summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2004-07-21 03:16:24 +0000
committerRoger Dingledine <arma@torproject.org>2004-07-21 03:16:24 +0000
commitddb6eb35afcd66e96011d9cba937a0fcde88d2d5 (patch)
tree84bd8c122aa505760ade2f0fff21036f5c84cafe
parent30d6b1479b5485c7e8cc3d10353ba115110ac81a (diff)
downloadtor-ddb6eb35afcd66e96011d9cba937a0fcde88d2d5.tar.gz
tor-ddb6eb35afcd66e96011d9cba937a0fcde88d2d5.zip
we were counting incorrectly when trying to figure out whether
a given AP stream was being handled or not. (how did this work?) svn:r2077
-rw-r--r--src/or/circuitbuild.c20
-rw-r--r--src/or/circuituse.c4
-rw-r--r--src/or/connection_edge.c6
3 files changed, 14 insertions, 16 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 0efdd3c5c5..b1240645c2 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -855,18 +855,14 @@ static routerinfo_t *choose_good_exit_server_general(routerlist_t *dir)
carray[j]->marked_for_close ||
circuit_stream_is_being_handled(carray[j]))
continue; /* Skip everything but APs in CIRCUIT_WAIT */
- switch (connection_ap_can_use_exit(carray[j], router))
- {
- case ADDR_POLICY_REJECTED:
- log_fn(LOG_DEBUG,"%s (index %d) would reject this stream.",
- router->nickname, i);
- break; /* would be rejected; try next connection */
- case ADDR_POLICY_ACCEPTED:
- case ADDR_POLICY_UNKNOWN:
- ++n_supported[i];
- log_fn(LOG_DEBUG,"%s is supported. n_supported[%d] now %d.",
- router->nickname, i, n_supported[i]);
- }
+ if(connection_ap_can_use_exit(carray[j], router)) {
+ ++n_supported[i];
+ log_fn(LOG_DEBUG,"%s is supported. n_supported[%d] now %d.",
+ router->nickname, i, n_supported[i]);
+ } else {
+ log_fn(LOG_DEBUG,"%s (index %d) would reject this stream.",
+ router->nickname, i);
+ }
} /* End looping over connections. */
if (n_supported[i] > best_support) {
/* If this router is better than previous ones, remember its index
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 9627b271b8..e81005fd87 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -82,7 +82,7 @@ static int circuit_is_acceptable(circuit_t *circ,
if (!strncmp(exitrouter->platform, "Tor 0.0.7", 9))
return 0;
} else if(purpose == CIRCUIT_PURPOSE_C_GENERAL) {
- if(connection_ap_can_use_exit(conn, exitrouter) == ADDR_POLICY_REJECTED) {
+ if(!connection_ap_can_use_exit(conn, exitrouter)) {
/* can't exit from this router */
return 0;
}
@@ -268,7 +268,7 @@ int circuit_stream_is_being_handled(connection_t *conn) {
(!circ->timestamp_dirty ||
circ->timestamp_dirty + options.NewCircuitPeriod < now)) {
exitrouter = router_get_by_digest(circ->build_state->chosen_exit_digest);
- if(exitrouter && connection_ap_can_use_exit(conn, exitrouter) != ADDR_POLICY_REJECTED)
+ if(exitrouter && connection_ap_can_use_exit(conn, exitrouter))
if(++num >= MIN_CIRCUITS_HANDLING_STREAM)
return 1;
}
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index f2c9d05a73..52e578da8e 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -945,8 +945,10 @@ int connection_ap_can_use_exit(connection_t *conn, routerinfo_t *exit)
return strncmp(exit->platform, "Tor 0.0.7", 9) ? 1 : 0;
}
addr = client_dns_lookup_entry(conn->socks_request->address);
- return router_compare_addr_to_exit_policy(addr,
- conn->socks_request->port, exit->exit_policy);
+ if(router_compare_addr_to_exit_policy(addr,
+ conn->socks_request->port, exit->exit_policy) < 0)
+ return 0;
+ return 1;
}
/** A helper function for socks_policy_permits_address() below.