Bladeren bron

On windows, ENOBUFS starts with WSA. #6296. Fix on 0.2.18-rc

Nick Mathewson 12 jaren geleden
bovenliggende
commit
e9b33ed1bf
3 gewijzigde bestanden met toevoegingen van 9 en 2 verwijderingen
  1. 4 0
      changes/bug6296
  2. 3 0
      src/common/compat.h
  3. 2 2
      src/or/connection.c

+ 4 - 0
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.

+ 3 - 0
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)

+ 2 - 2
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;