diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-07-05 05:01:00 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-07-05 05:01:00 -0400 |
commit | e9b33ed1bf4140e3aeda5eb9126027fbe5a3ec5a (patch) | |
tree | c39a2423bf87c145677fb79a00d670a2b05863b0 | |
parent | d13389b30ec2e17a8f08a00f82fac420ae968cd1 (diff) | |
download | tor-e9b33ed1bf4140e3aeda5eb9126027fbe5a3ec5a.tar tor-e9b33ed1bf4140e3aeda5eb9126027fbe5a3ec5a.tar.gz |
On windows, ENOBUFS starts with WSA. #6296. Fix on 0.2.18-rc
-rw-r--r-- | changes/bug6296 | 4 | ||||
-rw-r--r-- | src/common/compat.h | 3 | ||||
-rw-r--r-- | 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 000000000..b452b1745 --- /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 4efb0c8b8..42648bb04 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 af5c01181..95101ef65 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; |