summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/connection_edge.c9
-rw-r--r--src/or/connection_edge.h2
-rw-r--r--src/or/main.c1
3 files changed, 11 insertions, 1 deletions
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 20a27dc90c..67e594a6a9 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -509,7 +509,6 @@ connection_edge_finished_connecting(edge_connection_t *edge_conn)
* (Right now, we check in several places to make sure that this list is
* correct. When it's incorrect, we'll fix it, and log a BUG message.)
*/
-/* XXXXX Free this list on exit. */
static smartlist_t *pending_entry_connections = NULL;
static int untried_pending_connections = 0;
@@ -3591,3 +3590,11 @@ circuit_clear_isolation(origin_circuit_t *circ)
circ->socks_username_len = circ->socks_password_len = 0;
}
+/** Free all storage held in module-scoped variables for connection_edge.c */
+void
+connection_edge_free_all(void)
+{
+ untried_pending_connections = 0;
+ smartlist_free(pending_entry_connections);
+ pending_entry_connections = NULL;
+}
diff --git a/src/or/connection_edge.h b/src/or/connection_edge.h
index 86f3fe990c..521e759aed 100644
--- a/src/or/connection_edge.h
+++ b/src/or/connection_edge.h
@@ -102,6 +102,8 @@ int connection_edge_update_circuit_isolation(const entry_connection_t *conn,
void circuit_clear_isolation(origin_circuit_t *circ);
streamid_t get_unique_stream_id_by_circ(origin_circuit_t *circ);
+void connection_edge_free_all(void);
+
/** @name Begin-cell flags
*
* These flags are used in RELAY_BEGIN cells to change the default behavior
diff --git a/src/or/main.c b/src/or/main.c
index 0fe818d74f..b5c1b8ba69 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -3084,6 +3084,7 @@ tor_free_all(int postfork)
channel_tls_free_all();
channel_free_all();
connection_free_all();
+ connection_edge_free_all();
scheduler_free_all();
memarea_clear_freelist();
nodelist_free_all();