socketpair: provide Curl_socketpair only when !CURL_DISABLE_SOCKETPAIR
Ref: https://curl.se/dev/log.cgi?id=20240605035856-3529577 Reported-by: Marcel Raad Closes #13888
This commit is contained in:
parent
4e71f134e5
commit
f786fce914
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user