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; }
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; }