diff --git a/dll/win32/msafd/misc/dllmain.c b/dll/win32/msafd/misc/dllmain.c index 0e4dd446674..97330c2b4a0 100644 --- a/dll/win32/msafd/misc/dllmain.c +++ b/dll/win32/msafd/misc/dllmain.c @@ -2103,7 +2103,11 @@ WSPConnect(SOCKET Handle, Status = IOSB->Status; } - Socket->SharedData->SocketLastError = TranslateNtStatusError(Status); + if (Status == STATUS_LOCAL_DISCONNECT) + Socket->SharedData->SocketLastError = WSAETIMEDOUT; + else + Socket->SharedData->SocketLastError = TranslateNtStatusError(Status); + if (Status != STATUS_SUCCESS) goto Leave; @@ -2174,6 +2178,10 @@ Leave: } } + if (Status == STATUS_LOCAL_DISCONNECT && Errno == 0) + { + Status = STATUS_TIMEOUT; + } return MsafdReturnWithErrno(Status, lpErrno, 0, NULL); } diff --git a/dll/win32/ws2_32/src/sockctrl.c b/dll/win32/ws2_32/src/sockctrl.c index 15a13a55053..c6971ed342f 100644 --- a/dll/win32/ws2_32/src/sockctrl.c +++ b/dll/win32/ws2_32/src/sockctrl.c @@ -111,7 +111,7 @@ connect(IN SOCKET s, } /* Return with an Error */ - SetLastError(ErrorCode); + WSASetLastError(ErrorCode); return SOCKET_ERROR; }