dlls/ws2_32/socket.c
/***********************************************************************
 *              WS2_async_accept_recv            (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).
 */
WS2_async_accept_recv            (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).
WS2_async_accept_recv ( 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 WS2_async_accept_recv( void *arg, IO_STATUS_BLOCK *iosb, NTSTATUS status, void **apc )
{
    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 );
    *apc = ws2_async_accept_apc;
    return status;
}
static NTSTATUS WS2_async_accept_recv ( void * arg , IO_STATUS_BLOCK * iosb , NTSTATUS status , void * * apc ) { 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 ) ; * apc = ws2_async_accept_apc ; return status ; }
WS2_async_accept_recv            (INTERNAL)
 This function is used to finish the read part of an accept request.
WS2_async_accept_recv ( INTERNAL ) This function is used to finish the read part of an accept request .