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
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;
}
(!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;
}
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.