when counting how many being-built circs will handle a stream,

don't count ones that are too old


svn:r1517
This commit is contained in:
Roger Dingledine 2004-04-07 19:14:33 +00:00
parent ff76072feb
commit cf67520e95

View File

@ -459,10 +459,13 @@ int circuit_stream_is_being_handled(connection_t *conn) {
circuit_t *circ; circuit_t *circ;
routerinfo_t *exitrouter; routerinfo_t *exitrouter;
int num=0; int num=0;
time_t now = time(NULL);
for(circ=global_circuitlist;circ;circ = circ->next) { for(circ=global_circuitlist;circ;circ = circ->next) {
if(circ->cpath && circ->state != CIRCUIT_STATE_OPEN && if(circ->cpath && circ->state != CIRCUIT_STATE_OPEN &&
!circ->marked_for_close && circ->purpose == CIRCUIT_PURPOSE_C_GENERAL) { !circ->marked_for_close && circ->purpose == CIRCUIT_PURPOSE_C_GENERAL &&
(!circ->timestamp_dirty ||
circ->timestamp_dirty + options.NewCircuitPeriod < now)) {
exitrouter = router_get_by_nickname(circ->build_state->chosen_exit); exitrouter = router_get_by_nickname(circ->build_state->chosen_exit);
if(exitrouter && connection_ap_can_use_exit(conn, exitrouter) != ADDR_POLICY_REJECTED) if(exitrouter && connection_ap_can_use_exit(conn, exitrouter) != ADDR_POLICY_REJECTED)
if(++num >= MIN_CIRCUITS_HANDLING_STREAM) if(++num >= MIN_CIRCUITS_HANDLING_STREAM)