Browse Source

fix bug 245: When modifying the orconn_circid_map map, we would
sometimes decrement conn->n_circuits even when there was no circuit
originally. This caused conn->n_circuits to go negative.

We noticed this because we were checking if connections can be
closed based on conn->n_circuits == 0, so we were never closing
any connection that had ever had a circuit on it.


svn:r5931

Roger Dingledine 19 years ago
parent
commit
2c221dd8db
1 changed files with 1 additions and 1 deletions
  1. 1 1
      src/or/circuitlist.c

+ 1 - 1
src/or/circuitlist.c

@@ -112,8 +112,8 @@ circuit_set_circid_orconn(circuit_t *circ, uint16_t id,
     found = HT_REMOVE(orconn_circid_map, &orconn_circid_circuit_map, &search);
     if (found) {
       tor_free(found);
+      --old_conn->n_circuits;
     }
-    --old_conn->n_circuits;
   }
 
   if (conn == NULL)