diff --git a/src/w32.c b/src/w32.c index e11fa805f2..01a8616839 100644 --- a/src/w32.c +++ b/src/w32.c @@ -8928,7 +8928,7 @@ _sys_wait_readable (int fd) if (cp == NULL || cp->fd != fd || cp->status != STATUS_READ_READY) return STATUS_READ_ERROR; - cp->status = STATUS_READ_FAILED; + cp->status = STATUS_READ_IN_PROGRESS; hEv = pfn_WSACreateEvent (); rc = pfn_WSAEventSelect (SOCK_HANDLE (fd), hEv, FD_READ); @@ -8944,6 +8944,8 @@ _sys_wait_readable (int fd) pfn_WSAEventSelect (SOCK_HANDLE (fd), NULL, 0); if (rc == WAIT_OBJECT_0) cp->status = STATUS_READ_SUCCEEDED; + else + cp->status = STATUS_READ_FAILED; } pfn_WSACloseEvent (hEv); @@ -9078,7 +9080,7 @@ sys_read (int fd, char * buffer, unsigned int count) case STATUS_READ_SUCCEEDED: #ifdef WORKING_SELECT_EMULATION /* select on sockets no longer requires a 1-byte read. */ - if (fd_info[fd].flags & FILE_SOCKET == 0) + if ((fd_info[fd].flags & FILE_SOCKET) == 0) #endif { /* consume read-ahead char */