Commit d3c8842a authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

ntdll: Fill the IOSB in sock_send() only inside the "if (alerted)" block.

We can only get a successful status that way. This matches sock_recv().
parent 3905af7c
...@@ -1116,6 +1116,9 @@ static NTSTATUS sock_send( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi ...@@ -1116,6 +1116,9 @@ static NTSTATUS sock_send( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi
} }
SERVER_END_REQ; SERVER_END_REQ;
/* the server currently will never succeed immediately */
assert(status == STATUS_ALERTED || status == STATUS_PENDING || NT_ERROR(status));
if (!NT_ERROR(status) && is_icmp_over_dgram( fd )) if (!NT_ERROR(status) && is_icmp_over_dgram( fd ))
sock_save_icmp_id( async ); sock_save_icmp_id( async );
...@@ -1132,19 +1135,17 @@ static NTSTATUS sock_send( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi ...@@ -1132,19 +1135,17 @@ static NTSTATUS sock_send( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, voi
* and returns EWOULDBLOCK, but we have no way of doing that. */ * and returns EWOULDBLOCK, but we have no way of doing that. */
if (status == STATUS_DEVICE_NOT_READY && async->sent_len) if (status == STATUS_DEVICE_NOT_READY && async->sent_len)
status = STATUS_SUCCESS; status = STATUS_SUCCESS;
}
if (status != STATUS_PENDING)
{
information = async->sent_len; information = async->sent_len;
if (!NT_ERROR(status) || (wait_handle && !alerted)) if (!NT_ERROR(status) && status != STATUS_PENDING)
{ {
io->Status = status; io->Status = status;
io->Information = information; io->Information = information;
} }
release_fileio( &async->io );
} }
else information = 0;
if (status != STATUS_PENDING)
release_fileio( &async->io );
if (alerted) set_async_direct_result( &wait_handle, status, information, FALSE ); if (alerted) set_async_direct_result( &wait_handle, status, information, FALSE );
if (wait_handle) status = wait_async( wait_handle, options & FILE_SYNCHRONOUS_IO_ALERT ); if (wait_handle) status = wait_async( wait_handle, options & FILE_SYNCHRONOUS_IO_ALERT );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment