From 12aba472ef03200fbc7d1bd55406c66ba62ea18f Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 4 Oct 2016 18:27:17 +0000 Subject: [PATCH] [MSAFD] Partial implementation of SIO_ADDRESS_LIST_QUERY by Peter Hater. CORE-12000 svn path=/trunk/; revision=72902 --- reactos/dll/win32/msafd/misc/dllmain.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/reactos/dll/win32/msafd/misc/dllmain.c b/reactos/dll/win32/msafd/misc/dllmain.c index cdbbae171a5..f715484b688 100644 --- a/reactos/dll/win32/msafd/misc/dllmain.c +++ b/reactos/dll/win32/msafd/misc/dllmain.c @@ -890,6 +890,9 @@ WSPSelect(IN int nfds, if(!NT_SUCCESS(Status)) { + if (lpErrno) + *lpErrno = WSAEFAULT; + ERR("NtCreateEvent failed, 0x%08x\n", Status); return SOCKET_ERROR; } @@ -2055,6 +2058,24 @@ WSPIoctl(IN SOCKET Handle, case SIO_GET_EXTENSION_FUNCTION_POINTER: *lpErrno = WSAEINVAL; return SOCKET_ERROR; + + case SIO_ADDRESS_LIST_QUERY: + if (cbOutBuffer < (sizeof(SOCKET_ADDRESS_LIST) + sizeof(Socket->WSLocalAddress)) || IS_INTRESOURCE(lpvOutBuffer)) + { + *lpErrno = WSAEINVAL; + return SOCKET_ERROR; + } + + *lpcbBytesReturned = sizeof(SOCKET_ADDRESS_LIST) + + sizeof(Socket->WSLocalAddress); + + ((SOCKET_ADDRESS_LIST*)lpvOutBuffer)->iAddressCount = 1; + ((SOCKET_ADDRESS_LIST*)lpvOutBuffer)->Address[0].iSockaddrLength = sizeof(Socket->WSLocalAddress); + ((SOCKET_ADDRESS_LIST*)lpvOutBuffer)->Address[0].lpSockaddr = &Socket->WSLocalAddress; + + *lpErrno = NO_ERROR; + return NO_ERROR; + default: *lpErrno = Socket->HelperData->WSHIoctl(Socket->HelperContext, Handle,