From d854572ccc5f524ba48a158c2c26614def9e39e5 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 14 Aug 2020 15:45:08 +0200 Subject: [PATCH] socketpair: allow CURL_DISABLE_SOCKETPAIR ... to completely disable the use of socketpair Closes #5850 --- configure.ac | 18 ++++++++++++++++++ docs/CURL-DISABLE.md | 5 +++++ lib/multihandle.h | 4 ++-- lib/socketpair.c | 4 ++-- 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 @@ -4686,6 +4686,24 @@ AC_HELP_STRING([--disable-cookies],[Disable cookies support]), AC_MSG_RESULT(yes) ) +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 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..9e1f9ef4c 100644 --- a/lib/socketpair.c +++ b/lib/socketpair.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 2019, Daniel Stenberg, , et al. + * Copyright (C) 2019 - 2020, Daniel Stenberg, , 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.