summaryrefslogtreecommitdiff
path: root/src/or/connection.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-08-29 11:33:05 -0400
committerNick Mathewson <nickm@torproject.org>2014-08-29 11:33:05 -0400
commit4144b4552b00c25eba9be7a959aa75c1efbe4a18 (patch)
treea8d4f9955c3716dc10d8835835d2a3f4dad3fac4 /src/or/connection.c
parentb45f0f8fb9b11effcd48159c078f09a3fbc04b11 (diff)
downloadtor-4144b4552b00c25eba9be7a959aa75c1efbe4a18.tar.gz
tor-4144b4552b00c25eba9be7a959aa75c1efbe4a18.zip
Always event_del() connection events before freeing them
Previously, we had done this only in the connection_free() case, but when we called connection_free_() directly from connections_free_all(), we didn't free the connections.
Diffstat (limited to 'src/or/connection.c')
-rw-r--r--src/or/connection.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/or/connection.c b/src/or/connection.c
index 4f74a1d04b..6d205d143c 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -553,8 +553,10 @@ connection_free_(connection_t *conn)
tor_free(control_conn->incoming_cmd);
}
- tor_free(conn->read_event); /* Probably already freed by connection_free. */
- tor_free(conn->write_event); /* Probably already freed by connection_free. */
+ /* Probably already freed by connection_free. */
+ tor_event_free(conn->read_event);
+ tor_event_free(conn->write_event);
+ conn->read_event = conn->write_event = NULL;
IF_HAS_BUFFEREVENT(conn, {
/* This was a workaround to handle bugs in some old versions of libevent
* where callbacks can occur after calling bufferevent_free(). Setting