From e754664d620bf5aad76aa713b53299560497ac91 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Sat, 1 Apr 2006 10:22:57 +0000 Subject: [PATCH] bugfix: when we fail to bind or listen on an incoming or outgoing socket, we should close it before failing. otherwise we just leak it. (thanks to weasel for finding.) svn:r6284 --- src/or/connection.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/or/connection.c b/src/or/connection.c index c621fbbaf5..0c18735e13 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -555,12 +555,14 @@ connection_create_listener(const char *listenaddress, uint16_t listenport, helpfulhint = ". Is Tor already running?"; log_warn(LD_NET, "Could not bind to %s:%u: %s%s", address, usePort, tor_socket_strerror(e), helpfulhint); + tor_close_socket(s); goto err; } if (listen(s,SOMAXCONN) < 0) { log_warn(LD_NET, "Could not listen on %s:%u: %s", address, usePort, tor_socket_strerror(tor_socket_errno(s))); + tor_close_socket(s); goto err; } @@ -792,6 +794,7 @@ connection_connect(connection_t *conn, char *address, if (bind(s, (struct sockaddr*)&ext_addr, sizeof(ext_addr)) < 0) { log_warn(LD_NET,"Error binding network socket: %s", tor_socket_strerror(tor_socket_errno(s))); + tor_close_socket(s); return -1; } }