diff --git a/reactos/dll/win32/msafd/misc/dllmain.c b/reactos/dll/win32/msafd/misc/dllmain.c index c72059f2bee..c06df89267a 100644 --- a/reactos/dll/win32/msafd/misc/dllmain.c +++ b/reactos/dll/win32/msafd/misc/dllmain.c @@ -341,6 +341,10 @@ DWORD MsafdReturnWithErrno(NTSTATUS Status, DbgPrint("MSAFD: STATUS_INVALID_CONNECTION\n"); *Errno = WSAEAFNOSUPPORT; break; + case STATUS_INVALID_ADDRESS: + DbgPrint("MSAFD: STATUS_INVALID_ADDRESS\n"); + *Errno = WSAEADDRNOTAVAIL; + break; case STATUS_REMOTE_NOT_LISTENING: DbgPrint("MSAFD: STATUS_REMOTE_NOT_LISTENING\n"); *Errno = WSAECONNREFUSED; @@ -2289,6 +2293,7 @@ VOID SockAsyncSelectCompletionRoutine(PVOID Context, PIO_STATUS_BLOCK IoStatusBl /* FIXME: THIS IS NOT RIGHT!!! HACK HACK HACK! */ case AFD_EVENT_CONNECT: + case AFD_EVENT_CONNECT_FAIL: if (0 != (Socket->SharedData.AsyncEvents & FD_CONNECT) && 0 == (Socket->SharedData.AsyncDisabledEvents & FD_CONNECT)) { diff --git a/reactos/dll/win32/ws2_32/misc/stubs.c b/reactos/dll/win32/ws2_32/misc/stubs.c index ccc55a12e8d..2ac7e221ed6 100644 --- a/reactos/dll/win32/ws2_32/misc/stubs.c +++ b/reactos/dll/win32/ws2_32/misc/stubs.c @@ -510,10 +510,33 @@ WSAHtons(IN SOCKET s, IN USHORT hostshort, OUT USHORT FAR* lpnetshort) { - UNIMPLEMENTED + if (!WSAINITIALIZED) + { + WSASetLastError(WSANOTINITIALISED); + return SOCKET_ERROR; + } - WSASetLastError(WSASYSCALLFAILURE); - return SOCKET_ERROR; + PCATALOG_ENTRY provider; + if (!ReferenceProviderByHandle((HANDLE)s, &provider)) + { + WSASetLastError(WSAENOTSOCK); + return SOCKET_ERROR; + } + + switch (provider->ProtocolInfo.iNetworkByteOrder) + { + case BIGENDIAN: + *lpnetshort = htons(hostshort); + break; + case LITTLEENDIAN: +#ifdef LE + *lpnetshort = hostshort; +#else + *lpnetshort = (((hostshort & 0xFF00) >> 8) | ((hostshort & 0x00FF) << 8)); +#endif + break; + } + return 0; } @@ -576,10 +599,33 @@ WSANtohs(IN SOCKET s, IN USHORT netshort, OUT USHORT FAR* lphostshort) { - UNIMPLEMENTED + if (!WSAINITIALIZED) + { + WSASetLastError(WSANOTINITIALISED); + return SOCKET_ERROR; + } - WSASetLastError(WSASYSCALLFAILURE); - return SOCKET_ERROR; + PCATALOG_ENTRY provider; + if (!ReferenceProviderByHandle((HANDLE)s, &provider)) + { + WSASetLastError(WSAENOTSOCK); + return SOCKET_ERROR; + } + + switch (provider->ProtocolInfo.iNetworkByteOrder) + { + case BIGENDIAN: + *lphostshort = ntohs(netshort); + break; + case LITTLEENDIAN: +#ifdef LE + *lphostshort = netshort; +#else + *lphostshort = (((netshort & 0xFF00) >> 8) | ((netshort & 0x00FF) << 8)); +#endif + break; + } + return 0; }