diff options
Diffstat (limited to 'src/or/circuit.c')
-rw-r--r-- | src/or/circuit.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/or/circuit.c b/src/or/circuit.c index 22a79a764..11eb7a694 100644 --- a/src/or/circuit.c +++ b/src/or/circuit.c @@ -65,14 +65,16 @@ void circuit_close_all_marked() global_circuitlist = tmp; } - if(!global_circuitlist) - return; - - for (tmp = global_circuitlist; tmp->next; tmp=tmp->next) { - while (tmp->next && tmp->next->marked_for_close) { + tmp = global_circuitlist; + while (tmp && tmp->next) { + if (tmp->next->marked_for_close) { m = tmp->next->next; circuit_free(tmp->next); tmp->next = m; + /* Need to check new tmp->next; don't advance tmp. */ + } else { + /* Advance tmp. */ + tmp = tmp->next; } } } @@ -1266,7 +1268,7 @@ void assert_circuit_ok(const circuit_t *c) assert(c); assert(c->magic == CIRCUIT_MAGIC); - return 0; /* XXX fix the rest of this. */ + return; assert(c->n_addr); assert(c->n_port); |