aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/tortls.c4
-rw-r--r--src/or/connection.c4
-rw-r--r--src/or/main.c2
3 files changed, 7 insertions, 3 deletions
diff --git a/src/common/tortls.c b/src/common/tortls.c
index 2ab3771f3..191a82519 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -436,8 +436,10 @@ tor_tls_new(int sock, int isServer, int use_no_cert)
void
tor_tls_free(tor_tls *tls)
{
+ tor_assert(tls && tls->ssl);
SSL_free(tls->ssl);
- free(tls);
+ tls->ssl = NULL;
+ tor_free(tls);
}
/** Underlying function for TLS reading. Reads up to <b>len</b>
diff --git a/src/or/connection.c b/src/or/connection.c
index c6a45eb30..c76cc4562 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -170,8 +170,10 @@ _connection_free(connection_t *conn) {
if (connection_speaks_cells(conn)) {
if (conn->state == OR_CONN_STATE_OPEN)
directory_set_dirty();
- if (conn->tls)
+ if (conn->tls) {
tor_tls_free(conn->tls);
+ conn->tls = NULL;
+ }
}
if (conn->identity_pkey)
diff --git a/src/or/main.c b/src/or/main.c
index 24796df13..d440ba9a8 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -1276,10 +1276,10 @@ void tor_cleanup(void) {
* unlink, nothing we could do about it anyways. */
if (options->PidFile && options->command == CMD_RUN_TOR)
unlink(options->PidFile);
- crypto_global_cleanup();
if (accounting_is_enabled(options))
accounting_record_bandwidth_usage(time(NULL));
tor_free_all(); /* move tor_free_all back into the ifdef below later. XXX*/
+ crypto_global_cleanup();
#ifdef USE_DMALLOC
dmalloc_log_unfreed();
dmalloc_shutdown();