summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bug113064
-rw-r--r--src/or/connection.c14
2 files changed, 18 insertions, 0 deletions
diff --git a/changes/bug11306 b/changes/bug11306
new file mode 100644
index 0000000000..bf8ea40114
--- /dev/null
+++ b/changes/bug11306
@@ -0,0 +1,4 @@
+ o Bugfixes:
+ - When closing all connections on setting DisableNetwork to 1, use
+ connection_or_close_normally() rather than closing orconns out from
+ under the channel layer. Fixes bug #11306.
diff --git a/src/or/connection.c b/src/or/connection.c
index 1be4c45dd7..0c61b0d616 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -2359,6 +2359,20 @@ connection_mark_all_noncontrol_connections(void)
connection_mark_unattached_ap(TO_ENTRY_CONN(conn),
END_STREAM_REASON_HIBERNATING);
break;
+ case CONN_TYPE_OR:
+ {
+ or_connection_t *orconn = TO_OR_CONN(conn);
+ if (orconn->chan) {
+ connection_or_close_normally(orconn, 0);
+ } else {
+ /*
+ * There should have been one, but mark for close and hope
+ * for the best..
+ */
+ connection_mark_for_close(conn);
+ }
+ }
+ break;
default:
connection_mark_for_close(conn);
break;