[ros-diffs] [dchapyshev] 42102: - Implement WSAHtons, WSANtohs - Add some cases to MsafdReturnWithErrno, SockAsyncSelectCompletionRoutine Opera loads pages now, but the keyboard does not work. Patch by Mikhail Denisenko (denisenkom at gmail.com) See issue #4151 for more details.
dchapyshev at svn.reactos.org
dchapyshev at svn.reactos.org
Mon Jul 20 20:30:30 CEST 2009
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 at 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/dllmain.c?rev=42102&r1=42101&r2=42102&view=diff
==============================================================================
--- 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.c?rev=42102&r1=42101&r2=42102&view=diff
==============================================================================
--- 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;
}
More information about the Ros-diffs
mailing list