[PATCH v11 1/2] ntdll/socket: Implement exclusive flag for IOCTL_AFD_POLL.

Zebediah Figura zfigura at codeweavers.com
Thu Sep 16 11:30:50 CDT 2021


On 9/16/21 10:35 AM, Guillaume Charifi wrote:
> @@ -788,7 +791,13 @@ static void free_poll_req( void *private )
>       if (req->timeout) remove_timeout_user( req->timeout );
>   
>       for (i = 0; i < req->count; ++i)
> +    {
> +        if (req->sockets[i].sock->main_poll == req)
> +            req->sockets[i].sock->main_poll = NULL;
> +
>           release_object( req->sockets[i].sock );
> +    }
> +
>       release_object( req->async );
>       release_object( req->iosb );
>       list_remove( &req->entry );

This is too late, for the reasons mentioned earlier; it needs to be done 
when the request is terminated, so in complete_async_polls(), 
async_poll_timeout(), and poll_socket(). We shouldn't need to worry 
about doing it in sock_close_handle(), since we can't queue any more 
requests.



More information about the wine-devel mailing list