Author: dchapyshev Date: Mon Jul 20 20:30:30 2009 New Revision: 42102
URL: http://svn.reactos.org/svn/reactos?rev=42102&view=rev Log: - Implement WSAHtons, WSANtohs - Add some cases to MsafdReturnWithErrno, SockAsyncSelectCompletionRoutine Opera loads pages now, but the keyboard does not work. Patch by Mikhail Denisenko (denisenkom@gmail.com) See issue #4151 for more details.
Modified: trunk/reactos/dll/win32/msafd/misc/dllmain.c trunk/reactos/dll/win32/ws2_32/misc/stubs.c
Modified: trunk/reactos/dll/win32/msafd/misc/dllmain.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msafd/misc/dllmai... ============================================================================== --- trunk/reactos/dll/win32/msafd/misc/dllmain.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msafd/misc/dllmain.c [iso-8859-1] Mon Jul 20 20:30:30 2009 @@ -340,6 +340,10 @@ case STATUS_INVALID_CONNECTION: 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"); @@ -2289,6 +2293,7 @@
/* 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)) {
Modified: trunk/reactos/dll/win32/ws2_32/misc/stubs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/misc/stubs... ============================================================================== --- trunk/reactos/dll/win32/ws2_32/misc/stubs.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ws2_32/misc/stubs.c [iso-8859-1] Mon Jul 20 20:30:30 2009 @@ -510,10 +510,33 @@ IN USHORT hostshort, OUT USHORT FAR* lpnetshort) { - UNIMPLEMENTED - - WSASetLastError(WSASYSCALLFAILURE); - return SOCKET_ERROR; + if (!WSAINITIALIZED) + { + WSASetLastError(WSANOTINITIALISED); + 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 @@ IN USHORT netshort, OUT USHORT FAR* lphostshort) { - UNIMPLEMENTED - - WSASetLastError(WSASYSCALLFAILURE); - return SOCKET_ERROR; + if (!WSAINITIALIZED) + { + WSASetLastError(WSANOTINITIALISED); + 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; }