[PATCH 4/4] ws2_32: implement AcceptEx and GetAcceptExSockaddrs

Alexandre Julliard julliard at winehq.org
Tue Aug 31 09:39:21 CDT 2010


Mike Kaplinskiy <mike.kaplinskiy at gmail.com> writes:

>  /***********************************************************************
> + *              WS2_async_recv_accept            (INTERNAL)
> + *
> + * This function is used to finish the read part of an accept request. It is
> + * needed to place the completion on the correct socket (listener).
> + */
> +static NTSTATUS WINAPI WS2_async_recv_accept( void *arg, IO_STATUS_BLOCK *iosb, NTSTATUS status )
> +{
> +    void *junk;
> +    struct ws2_accept_async *wsa = arg;
> +
> +    status = WS2_async_recv( wsa->read, iosb, status, &junk );
> +    if (status == STATUS_PENDING)
> +        return status;
> +
> +    if (wsa->user_overlapped->hEvent)
> +        SetEvent(wsa->user_overlapped->hEvent);
> +    if (wsa->cvalue)
> +        WS_AddCompletion( HANDLE2SOCKET(wsa->listen_socket), wsa->cvalue, iosb->u.Status, iosb->Information );
> +    HeapFree( GetProcessHeap(), 0, wsa->read );
> +    HeapFree( GetProcessHeap(), 0, wsa );
> +
> +    return status;
> +}
> +
> +/***********************************************************************
> + *              WS2_async_accept                (INTERNAL)
> + *
> + * This is the function called to satisfy the AcceptEx callback
> + */
> +static NTSTATUS WINAPI WS2_async_accept( void *arg, IO_STATUS_BLOCK *iosb, NTSTATUS status )
> +{

These are not valid async callbacks, the way async callbacks work has
changed since the patch was first written.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list