diff --git a/socket.c b/socket.c index e285a5f..77d3499 100644 --- a/socket.c +++ b/socket.c @@ -187,7 +187,6 @@ open_socket(int domain, int type, int flags) (socket_flags & SOCK_CLOEXEC) == 0 && #endif !UTI_FdSetCloexec(sock_fd)) { - DEBUG_LOG("Could not set O_CLOEXEC : %s", strerror(errno)); close(sock_fd); return INVALID_SOCK_FD; } diff --git a/util.c b/util.c index e8bdea2..5dd1b11 100644 --- a/util.c +++ b/util.c @@ -888,12 +888,19 @@ UTI_FdSetCloexec(int fd) int flags; flags = fcntl(fd, F_GETFD); - if (flags != -1) { - flags |= FD_CLOEXEC; - return !fcntl(fd, F_SETFD, flags); + if (flags == -1) { + DEBUG_LOG("fcntl() failed : %s", strerror(errno)); + return 0; } - return 0; + flags |= FD_CLOEXEC; + + if (fcntl(fd, F_SETFD, flags) < 0) { + DEBUG_LOG("fcntl() failed : %s", strerror(errno)); + return 0; + } + + return 1; } /* ================================================== */