summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/circuitlist.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index 6fc97f1e14..43a55493f8 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -280,6 +280,7 @@ circuit_free(circuit_t *circ)
tor_free(circ->onionskin);
circuit_free_cpath(circ->cpath);
if (circ->rend_splice) {
+ tor_assert(circ->rend_splice->magic == CIRCUIT_MAGIC);
circ->rend_splice->rend_splice = NULL;
}
/* Remove from map. */
@@ -715,9 +716,11 @@ _circuit_mark_for_close(circuit_t *circ, int line, const char *file)
circ->marked_for_close = line;
circ->marked_for_close_file = file;
- if (circ->rend_splice && !circ->rend_splice->marked_for_close) {
- /* do this after marking this circuit, to avoid infinite recursion. */
- circuit_mark_for_close(circ->rend_splice);
+ if (circ->rend_splice) {
+ if (!circ->rend_splice->marked_for_close) {
+ /* do this after marking this circuit, to avoid infinite recursion. */
+ circuit_mark_for_close(circ->rend_splice);
+ }
circ->rend_splice = NULL;
}
}