[PATCH 4/5] ws2_32: Use IOCTL_AFD_WINE_DEFER.
Zebediah Figura
z.figura12 at gmail.com
Thu Jun 17 20:58:23 CDT 2021
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/ws2_32/socket.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 3c3eef72f51..bfc4bb6c09d 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -4564,18 +4564,16 @@ SOCKET WINAPI WSAAccept( SOCKET s, struct WS_sockaddr *addr, int *addrlen,
return cs;
case CF_DEFER:
- SERVER_START_REQ( set_socket_deferred )
- {
- req->handle = wine_server_obj_handle( SOCKET2HANDLE(s) );
- req->deferred = wine_server_obj_handle( SOCKET2HANDLE(cs) );
- if ( !wine_server_call_err ( req ) )
- {
- SetLastError( WSATRY_AGAIN );
- WS_closesocket( cs );
- }
- }
- SERVER_END_REQ;
- return SOCKET_ERROR;
+ {
+ obj_handle_t server_handle = cs;
+ IO_STATUS_BLOCK io;
+ NTSTATUS status;
+
+ status = NtDeviceIoControlFile( (HANDLE)s, NULL, NULL, NULL, &io, IOCTL_AFD_WINE_DEFER,
+ &server_handle, sizeof(server_handle), NULL, 0 );
+ SetLastError( status ? RtlNtStatusToDosError( status ) : WSATRY_AGAIN );
+ return -1;
+ }
case CF_REJECT:
WS_closesocket( cs );
--
2.30.2
More information about the wine-devel
mailing list