]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix a double-mark-for-close bug, where we were finding a conn
authorRoger Dingledine <arma@torproject.org>
Sat, 1 Jan 2005 07:54:01 +0000 (07:54 +0000)
committerRoger Dingledine <arma@torproject.org>
Sat, 1 Jan 2005 07:54:01 +0000 (07:54 +0000)
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

src/or/relay.c

index 46c23d7de432ebb61445b825cbee8948009f4c9a..8e6f623b016297916e08455d8587a6b21306712c 100644 (file)
@@ -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;
     }