commit f25323fe3f64fbfee0e1c2614d0e13befe283b88
parent 1c1e84281db6a5a8cd2a66c63481e4df316c44d5
Author: Nick Mathewson <nickm@torproject.org>
Date: Thu, 20 Sep 2018 12:52:29 -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.
Diffstat:
2 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/changes/bug27795 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
@@ -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);