From: Roger Dingledine Date: Sat, 1 Jan 2005 07:54:01 +0000 (+0000) Subject: Fix a double-mark-for-close bug, where we were finding a conn X-Git-Tag: debian-version-0.0.9.2-1~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a4ad47df86eef0dbb39c1e57cb692cbcd9e28a82;p=thirdparty%2Ftor.git Fix a double-mark-for-close bug, where we were finding a conn for a cell even if that conn is already marked for close. Don't back-port to 0.0.9.x, since this fix could have weird implications. svn:r3235 --- diff --git a/src/or/relay.c b/src/or/relay.c index 46c23d7de4..8e6f623b01 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -349,7 +349,7 @@ relay_lookup_conn(circuit_t *circ, cell_t *cell, int cell_direction) */ for (tmpconn = circ->n_streams; tmpconn; tmpconn=tmpconn->next_stream) { - if (rh.stream_id == tmpconn->stream_id) { + if (rh.stream_id == tmpconn->stream_id && !tmpconn->marked_for_close) { log_fn(LOG_DEBUG,"found conn for stream %d.", rh.stream_id); if (cell_direction == CELL_DIRECTION_OUT || connection_edge_is_rendezvous_stream(tmpconn)) @@ -357,13 +357,13 @@ relay_lookup_conn(circuit_t *circ, cell_t *cell, int cell_direction) } } for (tmpconn = circ->p_streams; tmpconn; tmpconn=tmpconn->next_stream) { - if (rh.stream_id == tmpconn->stream_id) { + if (rh.stream_id == tmpconn->stream_id && !tmpconn->marked_for_close) { log_fn(LOG_DEBUG,"found conn for stream %d.", rh.stream_id); return tmpconn; } } for (tmpconn = circ->resolving_streams; tmpconn; tmpconn=tmpconn->next_stream) { - if (rh.stream_id == tmpconn->stream_id) { + if (rh.stream_id == tmpconn->stream_id && !tmpconn->marked_for_close) { log_fn(LOG_DEBUG,"found conn for stream %d.", rh.stream_id); return tmpconn; }