aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-04-01 21:56:49 -0400
committerNick Mathewson <nickm@torproject.org>2014-04-01 21:56:49 -0400
commit17d5734df47bc4b9bd40f878e492eb676ca47ae8 (patch)
tree4581bf50b2e1deac840b4122eca1ea247efa86e5
parent86f619d0d34657e96d8ae3e83a197382bf6ba344 (diff)
parent852fd1819e911dfafef624640d9b54157073c326 (diff)
downloadtor-17d5734df47bc4b9bd40f878e492eb676ca47ae8.tar
tor-17d5734df47bc4b9bd40f878e492eb676ca47ae8.tar.gz
Merge remote-tracking branch 'public/bug11278'
-rw-r--r--changes/bug112783
-rw-r--r--src/or/circuitlist.c12
2 files changed, 15 insertions, 0 deletions
diff --git a/changes/bug11278 b/changes/bug11278
new file mode 100644
index 000000000..4fa59fc69
--- /dev/null
+++ b/changes/bug11278
@@ -0,0 +1,3 @@
+ o Minor bugfixes:
+ - Free placeholder entries in our circuit table at exit; fixes
+ a harmless memory leak. Fixes bug 11278; bugfix on 0.2.5.1-alpha.
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index 931332550..b03b590aa 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -833,6 +833,18 @@ circuit_free_all(void)
smartlist_free(circuits_pending_chans);
circuits_pending_chans = NULL;
+ {
+ chan_circid_circuit_map_t **elt, **next, *c;
+ for (elt = HT_START(chan_circid_map, &chan_circid_map);
+ elt;
+ elt = next) {
+ c = *elt;
+ next = HT_NEXT_RMV(chan_circid_map, &chan_circid_map, elt);
+
+ tor_assert(c->circuit == NULL);
+ tor_free(c);
+ }
+ }
HT_CLEAR(chan_circid_map, &chan_circid_map);
}