diff options
-rw-r--r-- | network_io/unix/sockets.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/network_io/unix/sockets.c b/network_io/unix/sockets.c index 9fc774ed0..e95ce2c7d 100644 --- a/network_io/unix/sockets.c +++ b/network_io/unix/sockets.c @@ -175,18 +175,21 @@ apr_status_t apr_socket_create(apr_socket_t **new, int ofamily, int type, #ifndef HAVE_SOCK_CLOEXEC { int flags; + apr_status_t rv; if ((flags = fcntl((*new)->socketdes, F_GETFD)) == -1) { + rv = errno; close((*new)->socketdes); (*new)->socketdes = -1; - return errno; + return rv; } flags |= FD_CLOEXEC; if (fcntl((*new)->socketdes, F_SETFD, flags) == -1) { + rv = errno; close((*new)->socketdes); (*new)->socketdes = -1; - return errno; + return rv; } } #endif @@ -357,18 +360,21 @@ apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock, #ifndef HAVE_ACCEPT4 { int flags; + apr_status_t rv; if ((flags = fcntl((*new)->socketdes, F_GETFD)) == -1) { + rv = errno; close((*new)->socketdes); (*new)->socketdes = -1; - return errno; + return rv; } flags |= FD_CLOEXEC; if (fcntl((*new)->socketdes, F_SETFD, flags) == -1) { + rv = errno; close((*new)->socketdes); (*new)->socketdes = -1; - return errno; + return rv; } } #endif |