summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-08-14 15:45:08 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-08-25 14:49:58 +0200
commit1ff058d91890f9f1ef7d320fb2c57bd13e214c51 (patch)
tree0909f76f459b2c9d260e10054191fbbed8d73649
parent259a81555d4081952f6b7e30b5fa86fff356869b (diff)
downloadcurl-1ff058d91890f9f1ef7d320fb2c57bd13e214c51.tar.gz
socketpair: allow CURL_DISABLE_SOCKETPAIRbagder/disable-socketpair
... to completely disable the use of socketpair
-rwxr-xr-xconfigure.ac18
-rw-r--r--docs/CURL-DISABLE.md5
-rw-r--r--lib/multihandle.h4
-rw-r--r--lib/socketpair.c4
4 files changed, 27 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac
index 918003e02..0d3e4e103 100755
--- a/configure.ac
+++ b/configure.ac
@@ -4687,6 +4687,24 @@ AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
)
dnl ************************************************************
+dnl disable socketpair
+dnl
+AC_MSG_CHECKING([whether to support socketpair])
+AC_ARG_ENABLE(socketpair,
+AC_HELP_STRING([--enable-socketpair],[Enable socketpair support])
+AC_HELP_STRING([--disable-socketpair],[Disable socketpair support]),
+[ case "$enableval" in
+ no)
+ AC_MSG_RESULT(no)
+ AC_DEFINE(CURL_DISABLE_SOCKETPAIR, 1, [to disable socketpair support])
+ ;;
+ *) AC_MSG_RESULT(yes)
+ ;;
+ esac ],
+ AC_MSG_RESULT(yes)
+)
+
+dnl ************************************************************
dnl disable HTTP authentication support
dnl
AC_MSG_CHECKING([whether to support HTTP authentication])
diff --git a/docs/CURL-DISABLE.md b/docs/CURL-DISABLE.md
index 83436b473..2dd250c7f 100644
--- a/docs/CURL-DISABLE.md
+++ b/docs/CURL-DISABLE.md
@@ -97,6 +97,11 @@ Disable the SMB(S) protocols
Disable the SMTP(S) protocols
+## CURL_DISABLE_SOCKETPAIR
+
+Disable the use of socketpair internally to allow waking up and canceling
+curl_multi_poll().
+
## CURL_DISABLE_TELNET
Disable the TELNET protocol
diff --git a/lib/multihandle.h b/lib/multihandle.h
index 0c9ce7f74..46eb12146 100644
--- a/lib/multihandle.h
+++ b/lib/multihandle.h
@@ -67,11 +67,11 @@ typedef enum {
#define CURLPIPE_ANY (CURLPIPE_MULTIPLEX)
-#if defined(USE_SOCKETPAIR) && !defined(USE_BLOCKING_SOCKETS)
+#if defined(USE_SOCKETPAIR) && !defined(USE_BLOCKING_SOCKETS) && \
+ !defined(CURL_DISABLE_SOCKETPAIR)
#define ENABLE_WAKEUP
#endif
-
/* value for MAXIMUM CONCURRENT STREAMS upper limit */
#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)
diff --git a/lib/socketpair.c b/lib/socketpair.c
index 1ec0d75a4..2a89b7b20 100644
--- a/lib/socketpair.c
+++ b/lib/socketpair.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019, 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -23,7 +23,7 @@
#include "curl_setup.h"
#include "socketpair.h"
-#ifndef HAVE_SOCKETPAIR
+#if !defined(HAVE_SOCKETPAIR) && !defined(CURL_DISABLE_SOCKETPAIR)
#ifdef WIN32
/*
* This is a socketpair() implementation for Windows.