]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
socketpair: provide `Curl_socketpair` only when `!CURL_DISABLE_SOCKETPAIR`
authorAndy Pan <i@andypan.me>
Wed, 5 Jun 2024 08:08:15 +0000 (16:08 +0800)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 7 Jun 2024 08:47:15 +0000 (10:47 +0200)
Ref: https://curl.se/dev/log.cgi?id=20240605035856-3529577

Reported-by: Marcel Raad
Closes #13888

lib/socketpair.c
lib/socketpair.h

index 284433d5a1bdb8a4115ad950668f624ad522b919..3b9e4069930c028cce342cec26a9dd1917e1cddb 100644 (file)
@@ -75,7 +75,29 @@ int Curl_pipe(curl_socket_t socks[2], bool nonblocking)
 #endif
 
 
-#if !defined(HAVE_SOCKETPAIR) && !defined(CURL_DISABLE_SOCKETPAIR)
+#ifndef CURL_DISABLE_SOCKETPAIR
+#ifdef HAVE_SOCKETPAIR
+int Curl_socketpair(int domain, int type, int protocol,
+                    curl_socket_t socks[2], bool nonblocking)
+{
+#ifdef SOCK_NONBLOCK
+  type = nonblocking ? type | SOCK_NONBLOCK : type;
+#endif
+  if(socketpair(domain, type, protocol, socks))
+    return -1;
+#ifndef SOCK_NONBLOCK
+  if(nonblocking) {
+    if(curlx_nonblock(socks[0], TRUE) < 0 ||
+       curlx_nonblock(socks[1], TRUE) < 0) {
+      close(socks[0]);
+      close(socks[1]);
+      return -1;
+    }
+  }
+#endif
+  return 0;
+}
+#else /* !HAVE_SOCKETPAIR */
 #ifdef _WIN32
 /*
  * This is a socketpair() implementation for Windows.
@@ -238,25 +260,5 @@ error:
   sclose(socks[1]);
   return -1;
 }
-#else
-int Curl_socketpair(int domain, int type, int protocol,
-                    curl_socket_t socks[2], bool nonblocking)
-{
-#ifdef SOCK_NONBLOCK
-  type = nonblocking ? type | SOCK_NONBLOCK : type;
-#endif
-  if(socketpair(domain, type, protocol, socks))
-    return -1;
-#ifndef SOCK_NONBLOCK
-  if(nonblocking) {
-    if(curlx_nonblock(socks[0], TRUE) < 0 ||
-       curlx_nonblock(socks[1], TRUE) < 0) {
-      close(socks[0]);
-      close(socks[1]);
-      return -1;
-    }
-  }
 #endif
-  return 0;
-}
-#endif /* ! HAVE_SOCKETPAIR */
+#endif /* !CURL_DISABLE_SOCKETPAIR */
index 5f9c7613cef038dee3e06d0645a648b708171da1..42f4034fc565f93e17f6d45de190c8a62af3d296 100644 (file)
@@ -63,7 +63,7 @@ int Curl_eventfd(curl_socket_t socks[2], bool nonblocking);
 #include <curl/curl.h>
 int Curl_pipe(curl_socket_t socks[2], bool nonblocking);
 
-#else /* HAVE_PIPE */
+#else /* !USE_EVENTFD && !HAVE_PIPE */
 
 #define wakeup_write     swrite
 #define wakeup_read      sread
@@ -86,10 +86,13 @@ int Curl_pipe(curl_socket_t socks[2], bool nonblocking);
 #define wakeup_create(p,nb)\
 Curl_socketpair(SOCKETPAIR_FAMILY, SOCKETPAIR_TYPE, 0, p, nb)
 
-#endif /* HAVE_PIPE */
+#endif /* USE_EVENTFD */
 
+#ifndef CURL_DISABLE_SOCKETPAIR
 #include <curl/curl.h>
 
 int Curl_socketpair(int domain, int type, int protocol,
                     curl_socket_t socks[2], bool nonblocking);
+#endif
+
 #endif /* HEADER_CURL_SOCKETPAIR_H */