diff --git a/configure.ac b/configure.ac index 003673e35..abfb8d91c 100644 --- a/configure.ac +++ b/configure.ac @@ -569,7 +569,7 @@ AC_CHECK_FUNCS_ONCE([ctime_r usleep]) AC_CHECK_FUNCS_ONCE([strerror_r]) # BSD -AC_CHECK_FUNCS_ONCE([lstat]) +AC_CHECK_FUNCS_ONCE([lstat paccept]) # Non-standard AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtod_l pipe2 accept4]) diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index 20996860f..b5ddd3d9b 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -3501,6 +3501,8 @@ finish: int pa_accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { int fd; + errno = 0; + #ifdef HAVE_ACCEPT4 if ((fd = accept4(sockfd, addr, addrlen, SOCK_CLOEXEC)) >= 0) goto finish; @@ -3510,6 +3512,11 @@ int pa_accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { #endif +#ifdef HAVE_PACCEPT + if ((fd = paccept(sockfd, addr, addrlen, NULL, SOCK_CLOEXEC)) >= 0) + goto finish; +#endif + if ((fd = accept(sockfd, addr, addrlen)) >= 0) goto finish;