=?UTF-8?Q?Michael=20M=C3=BCller=20?=: ws2_32: Add semi-stub for DisconnectEx.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Apr 21 09:47:17 CDT 2016
Module: wine
Branch: master
Commit: 59ffe4e321dae9aa5135baa333e614140282a70a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=59ffe4e321dae9aa5135baa333e614140282a70a
Author: Michael Müller <michael at fds-team.de>
Date: Wed Apr 20 16:03:57 2016 +0200
ws2_32: Add semi-stub for DisconnectEx.
Signed-off-by: Michael Müller <michael at fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ws2_32/socket.c | 21 ++++++++++++++++++++-
dlls/ws2_32/tests/sock.c | 4 ++--
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index f62c9cd..8d58631 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -3552,6 +3552,24 @@ connection_success:
return TRUE;
}
+/***********************************************************************
+ * DisconnectEx
+ */
+static BOOL WINAPI WS2_DisconnectEx( SOCKET s, LPOVERLAPPED ov, DWORD flags, DWORD reserved )
+{
+ TRACE( "socket %04lx, ov %p, flags 0x%x, reserved 0x%x\n", s, ov, flags, reserved );
+
+ if (flags & TF_REUSE_SOCKET)
+ FIXME( "Reusing socket not supported yet\n" );
+
+ if (ov)
+ {
+ ov->Internal = STATUS_PENDING;
+ ov->InternalHigh = 0;
+ }
+
+ return !WS_shutdown( s, SD_BOTH );
+}
/***********************************************************************
* getpeername (WS2_32.5)
@@ -4767,7 +4785,8 @@ INT WINAPI WSAIoctl(SOCKET s, DWORD code, LPVOID in_buff, DWORD in_size, LPVOID
}
else if ( IsEqualGUID(&disconnectex_guid, in_buff) )
{
- FIXME("SIO_GET_EXTENSION_FUNCTION_POINTER: unimplemented DisconnectEx\n");
+ *(LPFN_DISCONNECTEX *)out_buff = WS2_DisconnectEx;
+ break;
}
else if ( IsEqualGUID(&acceptex_guid, in_buff) )
{
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index e5da804..00555a9 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -7828,7 +7828,7 @@ static void test_DisconnectEx(void)
&pDisconnectEx, sizeof(pDisconnectEx), &num_bytes, NULL, NULL);
if (iret)
{
- skip("WSAIoctl failed to get DisconnectEx, error %d\n", WSAGetLastError());
+ win_skip("WSAIoctl failed to get DisconnectEx, error %d\n", WSAGetLastError());
closesocket(connector);
return;
}
@@ -7859,7 +7859,7 @@ static void test_DisconnectEx(void)
memset(&overlapped, 0, sizeof(overlapped));
bret = pDisconnectEx(connector, &overlapped, 0, 0);
ok(bret == FALSE, "DisconnectEx unexpectedly succeeded\n");
- ok(WSAGetLastError() == WSAENOTCONN, "expected WSAENOTCONN, got %d\n", WSAGetLastError());
+ todo_wine ok(WSAGetLastError() == WSAENOTCONN, "expected WSAENOTCONN, got %d\n", WSAGetLastError());
iret = connect(connector, (struct sockaddr *)&address, addrlen);
ok(iret == 0, "failed to connect, error %d\n", WSAGetLastError());
More information about the wine-cvs
mailing list