Jacek Caban : ws2_32: Use register_async for WS2_async_send.
Alexandre Julliard
julliard at winehq.org
Wed Apr 5 16:17:08 CDT 2017
Module: wine
Branch: master
Commit: 35ca862025fa14065d4ebed761783de225cb6690
URL: http://source.winehq.org/git/wine.git/?a=commit;h=35ca862025fa14065d4ebed761783de225cb6690
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Apr 5 13:38:17 2017 +0200
ws2_32: Use register_async for WS2_async_send.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ws2_32/socket.c | 33 ++++++++-------------------------
1 file changed, 8 insertions(+), 25 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 2a957ce..22ff479 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -3592,19 +3592,8 @@ static BOOL WINAPI WS2_ConnectEx(SOCKET s, const struct WS_sockaddr* name, int n
wsa->iovec[0].iov_base = sendBuf;
wsa->iovec[0].iov_len = sendBufLen;
- SERVER_START_REQ( register_async )
- {
- req->type = ASYNC_TYPE_WRITE;
- req->async.handle = wine_server_obj_handle( wsa->hSocket );
- req->async.callback = wine_server_client_ptr( WS2_async_send );
- req->async.iosb = wine_server_client_ptr( iosb );
- req->async.arg = wine_server_client_ptr( wsa );
- req->async.event = wine_server_obj_handle( ov->hEvent );
- req->async.cvalue = cvalue;
- status = wine_server_call( req );
- }
- SERVER_END_REQ;
-
+ status = register_async( ASYNC_TYPE_WRITE, wsa->hSocket, WS2_async_send, wsa, ov->hEvent,
+ NULL, (void *)cvalue, iosb );
if (status != STATUS_PENDING) HeapFree(GetProcessHeap(), 0, wsa);
/* If the connect already failed */
@@ -5609,18 +5598,12 @@ static int WS2_sendto( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
iosb->u.Status = STATUS_PENDING;
iosb->Information = n == -1 ? 0 : n;
- SERVER_START_REQ( register_async )
- {
- req->type = ASYNC_TYPE_WRITE;
- req->async.handle = wine_server_obj_handle( wsa->hSocket );
- req->async.callback = wine_server_client_ptr( WS2_async_send );
- req->async.iosb = wine_server_client_ptr( iosb );
- req->async.arg = wine_server_client_ptr( wsa );
- req->async.event = wine_server_obj_handle( lpCompletionRoutine ? 0 : lpOverlapped->hEvent );
- req->async.cvalue = cvalue;
- err = wine_server_call( req );
- }
- SERVER_END_REQ;
+ if (wsa->completion_func)
+ err = register_async( ASYNC_TYPE_WRITE, wsa->hSocket, WS2_async_send, wsa, NULL,
+ ws2_async_apc, wsa, iosb );
+ else
+ err = register_async( ASYNC_TYPE_WRITE, wsa->hSocket, WS2_async_send, wsa, lpOverlapped->hEvent,
+ NULL, (void *)cvalue, iosb );
/* Enable the event only after starting the async. The server will deliver it as soon as
the async is done. */
More information about the wine-cvs
mailing list