mirror of
https://github.com/curl/curl.git
synced 2026-08-25 17:43:39 +03:00
socket: use accept4 when available
Linux, *BSD, and Solaris support accept4 system call that enables the caller to assign additional flags and save some extra system calls. It can come in handy when O_NONBLOCK or/and FD_CLOEXEC is/are required on a socket after being accepted. Ref: https://man7.org/linux/man-pages/man2/accept.2.html https://man.freebsd.org/cgi/man.cgi?query=accept4 https://man.dragonflybsd.org/?command=accept§ion=2 https://man.openbsd.org/accept.2 https://man.netbsd.org/accept.2 https://docs.oracle.com/cd/E88353_01/html/E37843/accept4-3c.html https://www.gnu.org/software/gnulib/manual/html_node/accept4.html Closes #16979
This commit is contained in:
parent
2f5e4e0db4
commit
3d02872be7
8 changed files with 52 additions and 2 deletions
|
|
@ -92,6 +92,11 @@ CURL_EXTERN int curl_dbg_sclose(curl_socket_t sockfd,
|
|||
int line, const char *source);
|
||||
CURL_EXTERN curl_socket_t curl_dbg_accept(curl_socket_t s, void *a, void *alen,
|
||||
int line, const char *source);
|
||||
#ifdef HAVE_ACCEPT4
|
||||
CURL_EXTERN curl_socket_t curl_dbg_accept4(curl_socket_t s, void *saddr,
|
||||
void *saddrlen, int flags,
|
||||
int line, const char *source);
|
||||
#endif
|
||||
#ifdef HAVE_SOCKETPAIR
|
||||
CURL_EXTERN int curl_dbg_socketpair(int domain, int type, int protocol,
|
||||
curl_socket_t socket_vector[2],
|
||||
|
|
@ -159,6 +164,11 @@ CURL_EXTERN ALLOC_FUNC
|
|||
#undef accept /* for those with accept as a macro */
|
||||
#define accept(sock,addr,len)\
|
||||
curl_dbg_accept(sock, addr, len, __LINE__, __FILE__)
|
||||
#ifdef HAVE_ACCEPT4
|
||||
#undef accept4 /* for those with accept4 as a macro */
|
||||
#define accept4(sock,addr,len,flags)\
|
||||
curl_dbg_accept4(sock, addr, len, flags, __LINE__, __FILE__)
|
||||
#endif
|
||||
#ifdef HAVE_SOCKETPAIR
|
||||
#define socketpair(domain,type,protocol,socket_vector)\
|
||||
curl_dbg_socketpair((int)domain, type, protocol, socket_vector, \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue