diff options
author | Ken Brown <kbrown@cornell.edu> | 2020-10-03 12:37:36 -0400 |
---|---|---|
committer | Ken Brown <kbrown@cornell.edu> | 2020-10-04 12:53:05 -0400 |
commit | 6748c6ecf86947964a358f53e3a6c0b63849cf33 (patch) | |
tree | 5fef9fab306bce2ac800e55533b1d2a75fcbe1b6 | |
parent | 5930dca459bb34aad658dffc18203e05c179edc0 (diff) | |
download | newlib-6748c6ecf86947964a358f53e3a6c0b63849cf33.zip newlib-6748c6ecf86947964a358f53e3a6c0b63849cf33.tar.gz newlib-6748c6ecf86947964a358f53e3a6c0b63849cf33.tar.bz2 |
Cygwin: AF_UNIX: listen_pipe: check for STATUS_SUCCESS
A successful connection can be indicated by STATUS_SUCCESS or
STATUS_PIPE_CONNECTED. Previously we were checking only for the
latter.
-rw-r--r-- | winsup/cygwin/fhandler_socket_unix.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/winsup/cygwin/fhandler_socket_unix.cc b/winsup/cygwin/fhandler_socket_unix.cc index 0ae7fe1..1a9532f 100644 --- a/winsup/cygwin/fhandler_socket_unix.cc +++ b/winsup/cygwin/fhandler_socket_unix.cc @@ -1064,6 +1064,7 @@ fhandler_socket_unix::listen_pipe () IO_STATUS_BLOCK io; HANDLE evt = NULL; DWORD waitret = WAIT_OBJECT_0; + int ret = -1; io.Status = STATUS_PENDING; if (!is_nonblocking () && !(evt = create_event ())) @@ -1085,9 +1086,11 @@ fhandler_socket_unix::listen_pipe () set_errno (EINTR); else if (status == STATUS_PIPE_LISTENING) set_errno (EAGAIN); - else if (status != STATUS_PIPE_CONNECTED) + else if (status == STATUS_SUCCESS || status == STATUS_PIPE_CONNECTED) + ret = 0; + else __seterrno_from_nt_status (status); - return (status == STATUS_PIPE_CONNECTED) ? 0 : -1; + return ret; } ULONG |