]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Close orconns correctly through channels when setting DisableNetwork to 1
authorAndrea Shepard <andrea@torproject.org>
Wed, 16 Apr 2014 03:19:39 +0000 (20:19 -0700)
committerAndrea Shepard <andrea@torproject.org>
Wed, 16 Apr 2014 03:19:39 +0000 (20:19 -0700)
changes/bug11306 [new file with mode: 0644]
src/or/connection.c

diff --git a/changes/bug11306 b/changes/bug11306
new file mode 100644 (file)
index 0000000..bf8ea40
--- /dev/null
@@ -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.
index 1be4c45dd7fba5cdc278f041c76fc86eac145625..0c61b0d6162f6a8877cb26e35639e4558aea4f22 100644 (file)
@@ -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;