commit e9b33ed1bf4140e3aeda5eb9126027fbe5a3ec5a Author: Nick Mathewson nickm@torproject.org Date: Thu Jul 5 05:01:00 2012 -0400
On windows, ENOBUFS starts with WSA. #6296. Fix on 0.2.18-rc --- changes/bug6296 | 4 ++++ src/common/compat.h | 3 +++ src/or/connection.c | 4 ++-- 3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/changes/bug6296 b/changes/bug6296 new file mode 100644 index 0000000..b452b17 --- /dev/null +++ b/changes/bug6296 @@ -0,0 +1,4 @@ + o Minor bugfixes: + + - Instead of ENOBUFS on Windows, say WSAENOBUFS. Fixes + compilation on Windows. Fixes bug 6296; bugfix on 0.2.3.18-rc. diff --git a/src/common/compat.h b/src/common/compat.h index 4efb0c8..42648bb 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -500,6 +500,8 @@ int network_init(void); * the actual errno after a socket operation fails. */ #if defined(_WIN32) +/** Expands to WSA<b>e</b> on Windows, and to <b>e</b> elsewhere. */ +#define SOCK_ERRNO(e) WSA##e /** Return true if e is EAGAIN or the local equivalent. */ #define ERRNO_IS_EAGAIN(e) ((e) == EAGAIN || (e) == WSAEWOULDBLOCK) /** Return true if e is EINPROGRESS or the local equivalent. */ @@ -520,6 +522,7 @@ int network_init(void); int tor_socket_errno(tor_socket_t sock); const char *tor_socket_strerror(int e); #else +#define SOCK_ERRNO(e) e #define ERRNO_IS_EAGAIN(e) ((e) == EAGAIN) #define ERRNO_IS_EINPROGRESS(e) ((e) == EINPROGRESS) #define ERRNO_IS_CONN_EINPROGRESS(e) ((e) == EINPROGRESS) diff --git a/src/or/connection.c b/src/or/connection.c index af5c011..95101ef 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -1336,7 +1336,7 @@ connection_connect(connection_t *conn, const char *address,
if (get_n_open_sockets() >= get_options()->_ConnLimit-1) { warn_too_many_conns(); - *socket_error = ENOBUFS; + *socket_error = SOCK_ERRNO(ENOBUFS); return -1; }
@@ -1431,7 +1431,7 @@ connection_connect(connection_t *conn, const char *address, conn->s = s; if (connection_add_connecting(conn) < 0) { /* no space, forget it */ - *socket_error = ENOBUFS; + *socket_error = SOCK_ERRNO(ENOBUFS); return -1; } return inprogress ? 0 : 1;
tor-commits@lists.torproject.org