diff --git a/src/common/compat.c b/src/common/compat.c index aa84b7a965..d443fc6aa6 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -637,6 +637,16 @@ tor_socketpair(int family, int type, int protocol, int fd[2]) #if defined(HAVE_SOCKETPAIR) && !defined(MS_WINDOWS) int r; r = socketpair(family, type, protocol, fd); + if (r == 0) { + if (fd[0] >= 0) { + ++n_sockets_open; + mark_socket_open(fd[0]); + } + if (fd[1] >= 0) { + ++n_sockets_open; + mark_socket_open(fd[1]); + } + } return r < 0 ? -errno : r; #elif defined(USE_BSOCKETS) return bsocketpair(family, type, protocol, fd); diff --git a/src/or/connection.c b/src/or/connection.c index db50e87402..f7ecdea0fc 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -366,6 +366,7 @@ _connection_free(connection_t *conn) if (conn->s >= 0) { log_debug(LD_NET,"closing fd %d.",conn->s); tor_close_socket(conn->s); + conn->s = -1; } if (conn->type == CONN_TYPE_OR &&