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

server: Don't wake up always-blocking asyncs.

parent 386c4bcf
......@@ -1169,15 +1169,15 @@ static void test_blocking_irp(void)
memset(&io, 0xcc, sizeof(io));
status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsSizeInformation);
todo_wine ok(!status, "got %#x\n", status);
todo_wine ok(!io.Status, "got iosb status %#x\n", io.Status);
todo_wine ok(!io.Information, "got information %#Ix\n", io.Information);
ok(!status, "got %#x\n", status);
ok(!io.Status, "got iosb status %#x\n", io.Status);
ok(!io.Information, "got information %#Ix\n", io.Information);
memset(&io, 0xcc, sizeof(io));
status = NtQueryVolumeInformationFile(file, &io, buffer, sizeof(buffer), FileFsFullSizeInformation);
todo_wine ok(status == STATUS_DEVICE_NOT_READY, "got %#x\n", status);
todo_wine ok(io.Status == STATUS_DEVICE_NOT_READY, "got iosb status %#x\n", io.Status);
todo_wine ok(!io.Information, "got information %#Ix\n", io.Information);
ok(status == STATUS_DEVICE_NOT_READY, "got %#x\n", status);
ok(io.Status == STATUS_DEVICE_NOT_READY, "got iosb status %#x\n", io.Status);
ok(!io.Information, "got information %#Ix\n", io.Information);
CloseHandle(file);
}
......
......@@ -285,13 +285,13 @@ struct async *create_async( struct fd *fd, struct thread *thread, const async_da
return async;
}
void set_async_pending( struct async *async, int signal )
void set_async_pending( struct async *async )
{
if (!async->terminated)
{
async->pending = 1;
async->unknown_status = 0;
if (signal && !async->signaled)
if (!async->blocking && !async->signaled)
{
async->signaled = 1;
wake_up( &async->obj, 0 );
......
......@@ -961,7 +961,7 @@ DECL_HANDLER(get_next_device_request)
* so we need to do it now */
cancel_irp_call( irp );
else if (irp->async)
set_async_pending( irp->async, irp->file && is_fd_overlapped( irp->file->fd ) );
set_async_pending( irp->async );
free_irp_params( irp );
release_object( irp );
......
......@@ -229,7 +229,7 @@ extern void async_set_timeout( struct async *async, timeout_t timeout, unsigned
extern void async_set_result( struct object *obj, unsigned int status, apc_param_t total );
extern void async_set_completion_callback( struct async *async, async_completion_callback func, void *private );
extern void async_set_unknown_status( struct async *async );
extern void set_async_pending( struct async *async, int signal );
extern void set_async_pending( struct async *async );
extern int async_waiting( struct async_queue *queue );
extern void async_terminate( struct async *async, unsigned int status );
extern void async_request_complete( struct async *async, unsigned int status, data_size_t result,
......
......@@ -2399,7 +2399,7 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async )
obj_handle_t event_handle;
int mask;
set_async_pending( async, 0 );
set_async_pending( async );
if (is_machine_64bit( current->process->machine ))
{
......@@ -2530,7 +2530,7 @@ static void sock_ioctl( struct fd *fd, ioctl_code_t code, struct async *async )
#endif
}
set_async_pending( async, 0 );
set_async_pending( async );
if (bind( unix_fd, &bind_addr.addr, unix_len ) < 0)
{
......
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