ws2_32: Set the completion event on the server side also for AcceptEx.
This commit is contained in:
parent
8364351b99
commit
09cd7cf3e0
|
@ -2078,8 +2078,6 @@ static NTSTATUS WS2_async_accept_recv( void *user, IO_STATUS_BLOCK *iosb,
|
|||
if (status == STATUS_PENDING)
|
||||
return status;
|
||||
|
||||
if (wsa->user_overlapped->hEvent)
|
||||
NtSetEvent(wsa->user_overlapped->hEvent, NULL);
|
||||
if (wsa->cvalue)
|
||||
WS_AddCompletion( HANDLE2SOCKET(wsa->listen_socket), wsa->cvalue, iosb->u.Status, iosb->Information );
|
||||
|
||||
|
@ -2146,6 +2144,7 @@ static NTSTATUS WS2_async_accept( void *user, IO_STATUS_BLOCK *iosb,
|
|||
{
|
||||
req->type = ASYNC_TYPE_READ;
|
||||
req->async.handle = wine_server_obj_handle( wsa->accept_socket );
|
||||
req->async.event = wine_server_obj_handle( wsa->user_overlapped->hEvent );
|
||||
req->async.callback = wine_server_client_ptr( WS2_async_accept_recv );
|
||||
req->async.iosb = wine_server_client_ptr( iosb );
|
||||
req->async.arg = wine_server_client_ptr( wsa );
|
||||
|
@ -2164,9 +2163,6 @@ finish:
|
|||
iosb->u.Status = status;
|
||||
iosb->Information = 0;
|
||||
|
||||
if (wsa->user_overlapped->hEvent)
|
||||
NtSetEvent(wsa->user_overlapped->hEvent, NULL);
|
||||
|
||||
if (wsa->read) release_async_io( &wsa->read->io );
|
||||
release_async_io( &wsa->io );
|
||||
return status;
|
||||
|
@ -2434,7 +2430,6 @@ static BOOL WINAPI WS2_AcceptEx(SOCKET listener, SOCKET acceptor, PVOID dest, DW
|
|||
DWORD status;
|
||||
struct ws2_accept_async *wsa;
|
||||
int fd;
|
||||
ULONG_PTR cvalue = (overlapped && ((ULONG_PTR)overlapped->hEvent & 1) == 0) ? (ULONG_PTR)overlapped : 0;
|
||||
|
||||
TRACE("(%lx, %lx, %p, %d, %d, %d, %p, %p)\n", listener, acceptor, dest, dest_len, local_addr_len,
|
||||
rem_addr_len, received, overlapped);
|
||||
|
@ -2483,7 +2478,7 @@ static BOOL WINAPI WS2_AcceptEx(SOCKET listener, SOCKET acceptor, PVOID dest, DW
|
|||
wsa->listen_socket = SOCKET2HANDLE(listener);
|
||||
wsa->accept_socket = SOCKET2HANDLE(acceptor);
|
||||
wsa->user_overlapped = overlapped;
|
||||
wsa->cvalue = cvalue;
|
||||
wsa->cvalue = !((ULONG_PTR)overlapped->hEvent & 1) ? (ULONG_PTR)overlapped : 0;
|
||||
wsa->buf = dest;
|
||||
wsa->data_len = dest_len;
|
||||
wsa->local_len = local_addr_len;
|
||||
|
@ -2518,11 +2513,11 @@ static BOOL WINAPI WS2_AcceptEx(SOCKET listener, SOCKET acceptor, PVOID dest, DW
|
|||
{
|
||||
req->type = ASYNC_TYPE_READ;
|
||||
req->async.handle = wine_server_obj_handle( SOCKET2HANDLE(listener) );
|
||||
req->async.event = wine_server_obj_handle( overlapped->hEvent );
|
||||
req->async.callback = wine_server_client_ptr( WS2_async_accept );
|
||||
req->async.iosb = wine_server_client_ptr( overlapped );
|
||||
req->async.arg = wine_server_client_ptr( wsa );
|
||||
req->async.cvalue = cvalue;
|
||||
/* We don't set event since we may also have to read */
|
||||
req->async.cvalue = wsa->cvalue;
|
||||
status = wine_server_call( req );
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
|
|
Loading…
Reference in New Issue