aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorAndrea Shepard <andrea@torproject.org>2012-11-13 13:45:00 -0800
committerAndrea Shepard <andrea@torproject.org>2012-11-13 13:45:00 -0800
commit7ab3004223bd61f8ad1c573b309c63824e038528 (patch)
treeb3d266e54467b75af28a3df75eb68ebaac27efc2 /src/or
parentb13c6becc892d9716d8645f16b5d03bdb0b34651 (diff)
downloadtor-7ab3004223bd61f8ad1c573b309c63824e038528.tar
tor-7ab3004223bd61f8ad1c573b309c63824e038528.tar.gz
Call channel_mark_for_close() properly in hibernate_go_dormant()
Diffstat (limited to 'src/or')
-rw-r--r--src/or/hibernate.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/or/hibernate.c b/src/or/hibernate.c
index b33e5e216..9e54eb4b4 100644
--- a/src/or/hibernate.c
+++ b/src/or/hibernate.c
@@ -23,6 +23,8 @@ hibernating, phase 2:
#define HIBERNATE_PRIVATE
#include "or.h"
+#include "channel.h"
+#include "channeltls.h"
#include "config.h"
#include "connection.h"
#include "connection_edge.h"
@@ -846,7 +848,13 @@ hibernate_go_dormant(time_t now)
if (conn->type == CONN_TYPE_AP) /* send socks failure if needed */
connection_mark_unattached_ap(TO_ENTRY_CONN(conn),
END_STREAM_REASON_HIBERNATING);
- else
+ else if (conn->type == CONN_TYPE_OR) {
+ if (TO_OR_CONN(conn)->chan) {
+ channel_mark_for_close(TLS_CHAN_TO_BASE(TO_OR_CONN(conn)->chan));
+ } else {
+ connection_mark_for_close(conn);
+ }
+ } else
connection_mark_for_close(conn);
}