[tor-commits] [tor/master] Fix socket accounting with ORConn sockets.

nickm at torproject.org nickm at torproject.org
Thu Sep 20 18:09:56 UTC 2018


commit f25323fe3f64fbfee0e1c2614d0e13befe283b88
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Sep 20 12:52:29 2018 -0400

    Fix socket accounting with ORConn sockets.
    
    When we close a socket via tor_tls_free(), we previously had no way
    for our socket accounting logic to learn about it.  This meant that
    the socket accounting code would think we had run out of sockets,
    and freak out.
    
    Fixes bug 27795; bugfix on 0.3.5.1-alpha.
---
 changes/bug27795               | 5 +++++
 src/core/mainloop/connection.c | 1 +
 2 files changed, 6 insertions(+)

diff --git a/changes/bug27795 b/changes/bug27795
new file mode 100644
index 000000000..43bb1ba16
--- /dev/null
+++ b/changes/bug27795
@@ -0,0 +1,5 @@
+  o Major bugfixes (socket accounting):
+    - In our socket accounting code, count a socket as closed even
+      when it is closed indirectly by the TLS layer. Previously, we
+      would count these sockets as still in use, and incorrectly believe that
+      we had run out of sockets. Fixes bug 27795; bugfix on 0.3.5.1-alpha.
diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c
index 0c3abc844..b0cb5322c 100644
--- a/src/core/mainloop/connection.c
+++ b/src/core/mainloop/connection.c
@@ -646,6 +646,7 @@ connection_free_minimal(connection_t *conn)
       } else {
         /* The tor_tls_free() call below will close the socket; we must tell
          * the code below not to close it a second time. */
+        tor_release_socket_ownership(conn->s);
         conn->s = TOR_INVALID_SOCKET;
       }
       tor_tls_free(or_conn->tls);





More information about the tor-commits mailing list