ANSC_STATUS
HttpFcoDelFormElement
    (
        ANSC_HANDLE                 hThisObject,
        char*                       name
    )
{
    ANSC_STATUS                     returnStatus  = ANSC_STATUS_SUCCESS;
    PHTTP_FORM_CONTENT_OBJECT       pMyObject     = (PHTTP_FORM_CONTENT_OBJECT)hThisObject;
    PHTTP_HFP_INTERFACE             pHfpIf        = (PHTTP_HFP_INTERFACE      )pMyObject->hHfpIf;
    PHTTP_FORM_ELEMENT              pFormElement  = NULL;
    ULONG                           ulHashIndex   = 0;

    pFormElement =
        (PHTTP_FORM_ELEMENT)pMyObject->GetFormElement
            (
                (ANSC_HANDLE)pMyObject,
                name
            );

    if ( !pFormElement )
    {
        return  ANSC_STATUS_CANT_FIND;
    }
    else
    {
        ulHashIndex = pFormElement->HashIndex;
    }

    AnscAcquireLock        (&pMyObject->FeoTableLock);
    AnscQueuePopEntryByLink(&pMyObject->FeoTable[ulHashIndex], &pFormElement->Linkage);
    AnscReleaseLock        (&pMyObject->FeoTableLock);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscDetoCancel
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hSocket
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_DAEMON_ENGINE_TCP_OBJECT  pMyObject    = (PANSC_DAEMON_ENGINE_TCP_OBJECT)hThisObject;
    PANSC_DAEMON_SERVER_TCP_OBJECT  pServer      = (PANSC_DAEMON_SERVER_TCP_OBJECT)pMyObject->hDaemonServer;
    PANSC_DSTO_WORKER_OBJECT        pWorker      = (PANSC_DSTO_WORKER_OBJECT      )pServer->hWorker;
    PANSC_DAEMON_SOCKET_TCP_OBJECT  pSocket      = (PANSC_DAEMON_SOCKET_TCP_OBJECT)hSocket;
    PANSC_DETO_PACKET_OBJECT        pPacket      = NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry  = NULL;

    if ( (pMyObject->ControlFlags & ANSC_DETO_FLAG_ASYNC_SEND) == 0 )
    {
        return  ANSC_STATUS_SUCCESS;
    }

    AnscAcquireLock(&pMyObject->PacketQueueLock);

    pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->PacketQueue);

    while ( pSLinkEntry )
    {
        pPacket     = ACCESS_ANSC_DETO_PACKET_OBJECT(pSLinkEntry);
        pSLinkEntry = AnscQueueGetNextEntry(pSLinkEntry);

        if ( pPacket->hSocket != (ANSC_HANDLE)pSocket )
        {
            continue;
        }

        AnscQueuePopEntryByLink(&pMyObject->PacketQueue, &pPacket->Linkage);

        returnStatus =
            pWorker->SendComplete
                (
                    pWorker->hWorkerContext,
                    (ANSC_HANDLE)pSocket,
                    pPacket->hWorkerReserved,
                    ANSC_STATUS_FAILURE
                );

        AnscFreeMemory(pPacket);
    }

    AnscReleaseLock(&pMyObject->PacketQueueLock);



    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpBmoDelHeaderField
    (
        ANSC_HANDLE                 hThisObject,
        ULONG                       ulHeaderId
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_BASIC_MESSAGE_OBJECT      pMyObject    = (PHTTP_BASIC_MESSAGE_OBJECT)hThisObject;
    PHTTP_HFP_INTERFACE             pHfpIf       = (PHTTP_HFP_INTERFACE       )pMyObject->hHfpIf;
    PHTTP_HEADER_FIELD              pHttpHfo     = NULL;
    ULONG                           ulHashIndex  = AnscHashUlong(ulHeaderId, HTTP_BMO_HFO_TABLE_SIZE);
    ULONG                           ulIndex      = 0;

    while ( TRUE )
    {
        pHttpHfo =
            (PHTTP_HEADER_FIELD)pMyObject->GetHeaderField2
                (
                    (ANSC_HANDLE)pMyObject,
                    ulHeaderId,
                    ulIndex
                );

        if ( !pHttpHfo )
        {
            if ( ulIndex == 0 )
            {
                return  ANSC_STATUS_CANT_FIND;
            }
            else
            {
                return ANSC_STATUS_SUCCESS;
            }
        }

        AnscAcquireLock        (&pMyObject->HfoTableLock);
        AnscQueuePopEntryByLink(&pMyObject->HfoTable[ulHashIndex], &pHttpHfo->Linkage);
        AnscReleaseLock        (&pMyObject->HfoTableLock);

        AnscFreeMemory(pHttpHfo);

        ulIndex ++;
    }

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
TlsSmoDelSession
(
    ANSC_HANDLE                 hThisObject,
    ULONG                       host_id,
    ULONG                       peer_id,
    PUCHAR                      session_id,
    ULONG                       session_id_size
)
{
    PTLS_SESSION_MANAGER_OBJECT     pMyObject     = (PTLS_SESSION_MANAGER_OBJECT  )hThisObject;
    PTLS_SESSION_ENTRY_OBJECT       pSessionEntry = (PTLS_SESSION_ENTRY_OBJECT    )NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry   = (PSINGLE_LINK_ENTRY           )NULL;
    ULONG                           ulHashIndex   = AnscHashUlong(peer_id, TLS_SMO_SEO_TABLE_SIZE);

    AnscAcquireLock(&pMyObject->SeoTableLock);

    pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->SeoTable[ulHashIndex]);

    while ( pSLinkEntry )
    {
        pSessionEntry = ACCESS_TLS_SESSION_ENTRY_OBJECT(pSLinkEntry);
        pSLinkEntry   = AnscQueueGetNextEntry(pSLinkEntry);

        if ( pSessionEntry->Match2
                (
                    (ANSC_HANDLE)pSessionEntry,
                    host_id,
                    peer_id,
                    session_id,
                    session_id_size
                ) )
        {
            AnscQueuePopEntryByLink(&pMyObject->SeoTable[ulHashIndex], &pSessionEntry->Linkage);

            pSessionEntry->Remove((ANSC_HANDLE)pSessionEntry);

            break;
        }
    }

    AnscReleaseLock(&pMyObject->SeoTableLock);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscXmlDomNodeDelChild
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hChildNode
    )
{
    ANSC_STATUS                     returnStatus  = ANSC_STATUS_SUCCESS;
    PANSC_XML_DOM_NODE_OBJECT       pXmlNode      = (PANSC_XML_DOM_NODE_OBJECT)hThisObject;
    PANSC_XML_DOM_NODE_OBJECT       pChildNode    = (PANSC_XML_DOM_NODE_OBJECT)hChildNode;

    AnscAcquireXmlLock(&pXmlNode->ChildNodeQueueLock);
    AnscQueuePopEntryByLink(&pXmlNode->ChildNodeQueue, &pChildNode->Linkage);
    AnscReleaseXmlLock(&pXmlNode->ChildNodeQueueLock);

    AnscXmlDomNodeRemove((ANSC_HANDLE)pChildNode);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscLpccoDelPartyAddr
    (
        ANSC_HANDLE                 hThisObject,
        char*                       party_name
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_LPC_CONNECTOR_OBJECT      pMyObject    = (PANSC_LPC_CONNECTOR_OBJECT)hThisObject;
    PANSC_LPC_PARTY_ADDR            pPartyAddr   = (PANSC_LPC_PARTY_ADDR      )NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry  = (PSINGLE_LINK_ENTRY        )NULL;
    ULONG                           ulHashIndex  = AnscHashString(party_name, AnscSizeOfString(party_name), ANSC_LPCCO_PARTY_TABLE_SIZE);

    AnscAcquireLock(&pMyObject->PartyTableLock);

    pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->PartyTable[ulHashIndex]);

    while ( pSLinkEntry )
    {
        pPartyAddr  = ACCESS_ANSC_LPC_PARTY_ADDR(pSLinkEntry);
        pSLinkEntry = AnscQueueGetNextEntry(pSLinkEntry);

        if ( AnscEqualString
                (
                    pPartyAddr->PartyName,
                    party_name,
                    FALSE
                ) )
        {
            AnscQueuePopEntryByLink(&pMyObject->PartyTable[ulHashIndex], &pPartyAddr->Linkage);

            AnscFreeMemory(pPartyAddr);

            break;
        }
    }

    AnscReleaseLock(&pMyObject->PartyTableLock);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
Bmc2EnvcoDelComTerminal
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hComTerminal
    )
{
    ANSC_STATUS                     returnStatus     = ANSC_STATUS_SUCCESS;
    PBMC2_ENV_CONTROLLER_OBJECT     pMyObject        = (PBMC2_ENV_CONTROLLER_OBJECT  )hThisObject;
    PBMC2_ENV_CONTROLLER_PROPERTY   pProperty        = (PBMC2_ENV_CONTROLLER_PROPERTY)&pMyObject->Property;
    PBMC2_COM_TERMINAL_OBJECT       pBmc2ComTerminal = (PBMC2_COM_TERMINAL_OBJECT    )hComTerminal;

    AnscAcquireLock        (&pMyObject->ComtoQueueLock);
    AnscQueuePopEntryByLink(&pMyObject->ComtoQueue, &pBmc2ComTerminal->Linkage);
    AnscReleaseLock        (&pMyObject->ComtoQueueLock);

    pBmc2ComTerminal->Cancel((ANSC_HANDLE)pBmc2ComTerminal);
    pBmc2ComTerminal->Remove((ANSC_HANDLE)pBmc2ComTerminal);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscLpccoDelPendingCall
    (
        ANSC_HANDLE                 hThisObject,
        ULONG                       msg_type,
        ULONG                       seq_number
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_LPC_CONNECTOR_OBJECT      pMyObject    = (PANSC_LPC_CONNECTOR_OBJECT)hThisObject;
    PANSC_LPCCO_PENDING_CALL        pPendingCall = (PANSC_LPCCO_PENDING_CALL  )NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry  = (PSINGLE_LINK_ENTRY        )NULL;

    AnscAcquireLock(&pMyObject->PcallQueueLock);

    pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->PcallQueue);

    while ( pSLinkEntry )
    {
        pPendingCall = ACCESS_ANSC_LPCCO_PENDING_CALL(pSLinkEntry);
        pSLinkEntry  = AnscQueueGetNextEntry(pSLinkEntry);

        if ( (pPendingCall->ImcpMsgType   == msg_type  ) &&
             (pPendingCall->CallSeqNumber == seq_number) )
        {
            AnscQueuePopEntryByLink(&pMyObject->PcallQueue, &pPendingCall->Linkage);

            AnscSetEvent  (pPendingCall->CallEvent);
            AnscFreeMemory(pPendingCall);

            break;
        }
    }

    AnscReleaseLock(&pMyObject->PcallQueueLock);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscLpccoConnTimerInvoke
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_LPC_CONNECTOR_OBJECT      pMyObject    = (PANSC_LPC_CONNECTOR_OBJECT)hThisObject;
    PANSC_CPC_INTERFACE             pAnscCpcIf   = (PANSC_CPC_INTERFACE       )pMyObject->hAnscCpcIf;
    PANSC_LPC_PARTY_ADDR            pPartyAddr   = (PANSC_LPC_PARTY_ADDR      )NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry  = (PSINGLE_LINK_ENTRY        )NULL;
    ULONG                           i            = 0;

    if ( !pMyObject->bActive )
    {
        return  ANSC_STATUS_SUCCESS;
    }

    AnscAcquireLock(&pMyObject->PartyTableLock);

    for ( i = 0; i < ANSC_LPCCO_PARTY_TABLE_SIZE; i++ )
    {
        pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->PartyTable[i]);

        while ( pSLinkEntry )
        {
            pPartyAddr  = ACCESS_ANSC_LPC_PARTY_ADDR(pSLinkEntry);
            pSLinkEntry = AnscQueueGetNextEntry(pSLinkEntry);

            if ( pPartyAddr->Timestamp == 0 )
            {
                continue;
            }
            else if ( (pPartyAddr->PartyState & ANSC_LPC_PARTY_STATE_connectedIn ) ||
                      (pPartyAddr->PartyState & ANSC_LPC_PARTY_STATE_connectedOut) )
            {
                continue;
            }
            else if ( pPartyAddr->PartyType == ANSC_LPC_PARTY_TYPE_manager )
            {
                if ( (pMyObject->LpcOpmode  == ANSC_LPC_OPMODE_CLIENT) &&
                     (pMyObject->bConnected == TRUE                  ) )
                {
                    pMyObject->bConnected = FALSE;
                }

                continue;
            }
            else if ( pPartyAddr->PartyType != ANSC_LPC_PARTY_TYPE_client )
            {
                continue;
            }
            else if ( pPartyAddr->RefCount > 0 )
            {
                continue;
            }

            AnscQueuePopEntryByLink(&pMyObject->PartyTable[i], &pPartyAddr->Linkage);

            if ( TRUE )
            {
                returnStatus =
                    pAnscCpcIf->NotifyEvent
                        (
                            pAnscCpcIf->hOwnerContext,
                            ANSC_CPC_EVENT_DISCONNECTED,
                            (ANSC_HANDLE)pPartyAddr
                        );
            }

            AnscFreeMemory(pPartyAddr);
        }
    }

    AnscReleaseLock(&pMyObject->PartyTableLock);

    if ( (pMyObject->LpcOpmode  == ANSC_LPC_OPMODE_CLIENT) &&
         (pMyObject->bConnected == FALSE                 ) )
    {
        returnStatus = pMyObject->ConnectToManager((ANSC_HANDLE)pMyObject);
    }

    return  ANSC_STATUS_SUCCESS;
}
Exemplo n.º 10
0
ANSC_STATUS
BwrmEcoRamForcePageCache
    (
        ANSC_HANDLE                 hThisObject,
        char*                       page_path,
        BOOL                        bCachedForced
    )
{
    ANSC_STATUS                     returnStatus     = ANSC_STATUS_SUCCESS;
    PBWRM_ENV_CONTROLLER_OBJECT     pMyObject        = (PBWRM_ENV_CONTROLLER_OBJECT  )hThisObject;
    PBWRM_ENV_CONTROLLER_PROPERTY   pProperty        = (PBWRM_ENV_CONTROLLER_PROPERTY)&pMyObject->Property;
    PSINGLE_LINK_ENTRY              pSLinkEntry      = (PSINGLE_LINK_ENTRY         )NULL;
    PBWRM_ENV_CACHE_FORCED_PAGE     pCacheForcedPage = (PBWRM_ENV_CACHE_FORCED_PAGE)NULL;
    BOOL                            bFound           = FALSE;
    ULONG                           ulLen            = AnscSizeOfString(page_path);

    AnscAcquireLock(&pMyObject->AccessLock);

    pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->ForcedCachedPages);

    while ( pSLinkEntry )
    {
        pCacheForcedPage = ACCESS_BWRM_ENV_CACHE_FORCED_PAGE(pSLinkEntry);
        pSLinkEntry      = AnscQueueGetNextEntry(pSLinkEntry);

        if ( ulLen == AnscSizeOfString(pCacheForcedPage->PagePath) &&
             AnscEqualString2(pCacheForcedPage->PagePath, page_path, ulLen, FALSE) )
        {
            bFound = TRUE;
            break;
        }
    }

    if ( bFound && !bCachedForced )
    {
        /* remove it from the list */
        AnscQueuePopEntryByLink(&pMyObject->ForcedCachedPages, &pCacheForcedPage->Linkage);
    }
    else if ( bCachedForced && !bFound )
    {
        pCacheForcedPage = (PBWRM_ENV_CACHE_FORCED_PAGE)AnscAllocateMemory(sizeof(BWRM_ENV_CACHE_FORCED_PAGE));

        if ( pCacheForcedPage )
        {
            pCacheForcedPage->PagePath = AnscCloneString(page_path);

            if ( pCacheForcedPage->PagePath )
            {
                AnscQueuePushEntry(&pMyObject->ForcedCachedPages, &pCacheForcedPage->Linkage);
            }
            else
            {
                BwrmEnvRemoveCacheForcedPage(pCacheForcedPage);
            }
        }
    }

    AnscReleaseLock(&pMyObject->AccessLock);

    return  returnStatus;
}
ANSC_HANDLE
Bmc2EnvcoDelCommandProperty
    (
        ANSC_HANDLE                 hThisObject,
        char*                       pCommandName,
        char*                       pDomainNamePattern
    )
{
    ANSC_STATUS                     returnStatus         = ANSC_STATUS_SUCCESS;
    PBMC2_ENV_CONTROLLER_OBJECT     pMyObject            = (PBMC2_ENV_CONTROLLER_OBJECT  )hThisObject;
    PBMC2_ENV_CONTROLLER_PROPERTY   pProperty            = (PBMC2_ENV_CONTROLLER_PROPERTY)&pMyObject->Property;
    PBMC2_COMMAND_PROPERTY          pBmc2CommandProperty = (PBMC2_COMMAND_PROPERTY       )NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry          = (PSINGLE_LINK_ENTRY           )NULL;
    ULONG                           ulHashIndex          = AnscHashString(pCommandName, AnscSizeOfString(pCommandName), BMC2_ENVCO_COMPO_TABLE_SIZE);
    PBMC2_COMMAND_PROPERTY          pBmc2CommandRef      = (PBMC2_COMMAND_PROPERTY       )NULL;

    AnscAcquireLock(&pMyObject->CompoTableLock);

    pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->CompoTable[ulHashIndex]);

    while ( pSLinkEntry )
    {
        pBmc2CommandProperty = ACCESS_BMC2_COMMAND_PROPERTY(pSLinkEntry);
        pSLinkEntry          = AnscQueueGetNextEntry(pSLinkEntry);

        if ( AnscEqualString
                (
                    pBmc2CommandProperty->CommandName,
                    pCommandName,
                    FALSE
                ) )
        {
            BOOL                    bDomainMatched = FALSE;

            /* check if the specified domain matches pattern defined in command property */
            if ( !pDomainNamePattern && !pBmc2CommandProperty->DomainNamePattern )
            {
                bDomainMatched = TRUE;
            }
            else if ( !pDomainNamePattern && pBmc2CommandProperty->DomainNamePattern )
            {
                if ( AnscEqualString(pBmc2CommandProperty->DomainNamePattern, "*", TRUE) )
                {
                    bDomainMatched = TRUE;
                }
            }
            else if ( !pBmc2CommandProperty->DomainNamePattern || 
                 AnscEqualString(pBmc2CommandProperty->DomainNamePattern, "*", TRUE) )
            {
                if ( !pDomainNamePattern || AnscEqualString(pDomainNamePattern, "*", TRUE) )
                {
                    bDomainMatched = TRUE;
                }
            }
            else
            {
                ULONG               ulDNLen      = AnscSizeOfString(pBmc2CommandProperty->DomainNamePattern);
                ULONG               ulCmdDNLen   = AnscSizeOfString(pDomainNamePattern);
                ULONG               ulCmpLen     = (ulDNLen > ulCmdDNLen) ? ulCmdDNLen : ulDNLen;

                if ( !pBmc2CommandRef && AnscEqualString2(pDomainNamePattern, pBmc2CommandProperty->DomainNamePattern, ulCmpLen, FALSE) )
                {
                    pBmc2CommandRef = pBmc2CommandProperty;
                }
                else if ( !pBmc2CommandRef && 
                          (!pBmc2CommandProperty->DomainNamePattern || 
                            AnscEqualString(pBmc2CommandProperty->DomainNamePattern, "*", TRUE)) )
                {
                    pBmc2CommandRef = pBmc2CommandProperty;
                }
                else
                {
                    BOOL                bEndWithStar = (pBmc2CommandProperty->DomainNamePattern[ulDNLen - 1] == '*');

                    if ( bEndWithStar &&
                         AnscEqualString2(pDomainNamePattern, pBmc2CommandProperty->DomainNamePattern, ulDNLen - 1, FALSE) )
                    {
                        pBmc2CommandRef = pBmc2CommandProperty;
                    }
                }

                bDomainMatched = 
                    AnscEqualString
                        (
                            pBmc2CommandProperty->DomainNamePattern, 
                            pDomainNamePattern, 
                            FALSE
                        );
            }

            if ( !bDomainMatched )
            {
                continue;
            }

            AnscQueuePopEntryByLink(&pMyObject->CompoTable[ulHashIndex], &pBmc2CommandProperty->Linkage);

            AnscReleaseLock(&pMyObject->CompoTableLock);

            Bmc2FreeCommandProperty(pBmc2CommandProperty);

            return  (ANSC_HANDLE)NULL;
        }
    }

    AnscReleaseLock(&pMyObject->CompoTableLock);

    return  (ANSC_HANDLE)pBmc2CommandRef;
}
ANSC_HANDLE
AnscLpccoPopPendingCall
    (
        ANSC_HANDLE                 hThisObject,
        char*                       party_name,
        ULONG                       msg_type,
        ULONG                       seq_number,
        ULONG                       error_code,
        ANSC_HANDLE                 output_bdo
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_LPC_CONNECTOR_OBJECT      pMyObject    = (PANSC_LPC_CONNECTOR_OBJECT)hThisObject;
    PANSC_LPCCO_PENDING_CALL        pPendingCall = (PANSC_LPCCO_PENDING_CALL  )NULL;
    PSINGLE_LINK_ENTRY              pSLinkEntry  = (PSINGLE_LINK_ENTRY        )NULL;

    AnscAcquireLock(&pMyObject->PcallQueueLock);

    pSLinkEntry = AnscQueueGetFirstEntry(&pMyObject->PcallQueue);

    while ( pSLinkEntry )
    {
        pPendingCall = ACCESS_ANSC_LPCCO_PENDING_CALL(pSLinkEntry);
        pSLinkEntry  = AnscQueueGetNextEntry(pSLinkEntry);

        if ( (pPendingCall->ImcpMsgType   == msg_type  ) &&
             (pPendingCall->CallSeqNumber == seq_number) )
        {
            if ( party_name && pPendingCall->PartyName )
            {
                if ( !AnscEqualString
                        (
                            party_name,
                            pPendingCall->PartyName,
                            FALSE
                        ) )
                {
                    continue;
                }
            }

            AnscQueuePopEntryByLink(&pMyObject->PcallQueue, &pPendingCall->Linkage);

            AnscReleaseLock(&pMyObject->PcallQueueLock);

            if ( TRUE )
            {
                pPendingCall->CallError     = error_code;
                pPendingCall->CallOutputBdo = output_bdo;

                AnscSetEvent(pPendingCall->CallEvent);
            }

            return  (ANSC_HANDLE)pPendingCall;
        }
    }

    AnscReleaseLock(&pMyObject->PcallQueueLock);

    if ( output_bdo )
    {
        AnscFreeBdo(output_bdo);
    }

    return  (ANSC_HANDLE)NULL;
}