Free pending_entry_connections on shutdown.

This commit is contained in:
Nick Mathewson 2015-11-17 09:06:47 -05:00
parent 84b3350c83
commit 58edf92678
3 changed files with 11 additions and 1 deletions

View File

@ -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 * (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.) * 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 smartlist_t *pending_entry_connections = NULL;
static int untried_pending_connections = 0; 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; 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;
}

View File

@ -102,6 +102,8 @@ int connection_edge_update_circuit_isolation(const entry_connection_t *conn,
void circuit_clear_isolation(origin_circuit_t *circ); void circuit_clear_isolation(origin_circuit_t *circ);
streamid_t get_unique_stream_id_by_circ(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 /** @name Begin-cell flags
* *
* These flags are used in RELAY_BEGIN cells to change the default behavior * These flags are used in RELAY_BEGIN cells to change the default behavior

View File

@ -3084,6 +3084,7 @@ tor_free_all(int postfork)
channel_tls_free_all(); channel_tls_free_all();
channel_free_all(); channel_free_all();
connection_free_all(); connection_free_all();
connection_edge_free_all();
scheduler_free_all(); scheduler_free_all();
memarea_clear_freelist(); memarea_clear_freelist();
nodelist_free_all(); nodelist_free_all();