]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Call channel_mark_for_close() properly in hibernate_go_dormant()
authorAndrea Shepard <andrea@torproject.org>
Tue, 13 Nov 2012 21:45:00 +0000 (13:45 -0800)
committerAndrea Shepard <andrea@torproject.org>
Tue, 13 Nov 2012 21:45:00 +0000 (13:45 -0800)
src/or/hibernate.c

index b33e5e216cfdb5f8b86966142d7b579fee3ebcaa..9e54eb4b4c1f7ebe5b9371400f7a15c5e73e06bf 100644 (file)
@@ -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);
   }