ANSC_STATUS CosaBridgingRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_BRIDGING pMyObject = (PCOSA_DATAMODEL_BRIDGING )hThisObject; PSLIST_HEADER pBridgeHead = (PSLIST_HEADER )&pMyObject->BridgeList; PCOSA_CONTEXT_LINK_OBJECT pCosaContext2 = (PCOSA_CONTEXT_LINK_OBJECT )NULL; PCOSA_DML_BRG_FULL_ALL pDmlBridge = (PCOSA_DML_BRG_FULL_ALL )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; PSLIST_HEADER pListHead = (PSLIST_HEADER )NULL; PSINGLE_LINK_ENTRY pSLinkEntry2 = (PSINGLE_LINK_ENTRY )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext3 = (PCOSA_CONTEXT_LINK_OBJECT )NULL; PCOSA_DML_BRG_PORT_FULL pPort = (PCOSA_DML_BRG_PORT_FULL )NULL; pSLinkEntry = AnscSListGetFirstEntry(pBridgeHead); while ( pSLinkEntry ) { pCosaContext2 = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pDmlBridge = (PCOSA_DML_BRG_FULL_ALL)pCosaContext2->hContext; if ( pDmlBridge ) { AnscSListPopEntryByLink(pBridgeHead, &pCosaContext2->Linkage); pListHead = &pDmlBridge->PortList; pSLinkEntry2 = AnscSListGetFirstEntry(pListHead); while ( pSLinkEntry2 ) { pCosaContext3 = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry2); pSLinkEntry2 = AnscSListGetNextEntry(pSLinkEntry2); pPort = (PCOSA_DML_BRG_PORT_FULL)pCosaContext3->hContext; AnscSListPopEntryByLink(pListHead, &pCosaContext3->Linkage); if ( pPort ) { AnscFreeMemory(pPort); } AnscFreeMemory(pCosaContext3); } AnscFreeMemory(pDmlBridge); AnscFreeMemory(pCosaContext2); } } AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS CosaTSIPRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_TSIP pMyObject = (PCOSA_DATAMODEL_TSIP)hThisObject; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = NULL; /* Remove necessary resounce */ if (AnscSListQueryDepth(&pMyObject->SubnetList) != 0) { pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->SubnetList); while ( pSLinkEntry ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); AnscSListPopEntryByLink(&pMyObject->SubnetList, &pCosaContext->Linkage); AnscFreeMemory(pCosaContext->hContext); AnscFreeMemory(pCosaContext); } } if (AnscSListQueryDepth(&pMyObject->RuleList) != 0) { pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->RuleList); while ( pSLinkEntry ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); AnscSListPopEntryByLink(&pMyObject->RuleList, &pCosaContext->Linkage); AnscFreeMemory(pCosaContext->hContext); AnscFreeMemory(pCosaContext); } } /* Remove self */ AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ULONG IPv4PingServerTable_DelEntry ( ANSC_HANDLE hInsContext, ANSC_HANDLE hInstance ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_SELFHEAL pSelfHeal = (PCOSA_DATAMODEL_SELFHEAL)g_pCosaBEManager->hSelfHeal; PCOSA_CONTEXT_SELFHEAL_LINK_OBJECT pSelfHealCxtLink = (PCOSA_CONTEXT_SELFHEAL_LINK_OBJECT)hInstance; PCOSA_DML_SELFHEAL_IPv4_SERVER_TABLE pServerIpv4 = (PCOSA_DML_SELFHEAL_IPv4_SERVER_TABLE)pSelfHealCxtLink->hContext; /* Remove entery from the database */ returnStatus = RemovePingServerURI(PingServerType_IPv4, pServerIpv4->InstanceNumber); if ( returnStatus == ANSC_STATUS_SUCCESS ) { /* Remove entery from the Queue */ if(AnscSListPopEntryByLink(&pSelfHeal->IPV4PingServerList, &pSelfHealCxtLink->Linkage) == TRUE) { AnscFreeMemory(pSelfHealCxtLink->hContext); AnscFreeMemory(pSelfHealCxtLink); } else { return ANSC_STATUS_FAILURE; } } return returnStatus; }
ANSC_STATUS CosaNeighdiscRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_NEIGHDISC pMyObject = (PCOSA_DATAMODEL_NEIGHDISC)hThisObject; PSLIST_HEADER pNeighdiscIFHead = (PSLIST_HEADER)&pMyObject->InterfaceList; PCOSA_DML_NEIGHDISC_IF_FULL pNeighdiscInterface = (PCOSA_DML_NEIGHDISC_IF_FULL)NULL; PSINGLE_LINK_ENTRY pLink = (PSINGLE_LINK_ENTRY )NULL; PSINGLE_LINK_ENTRY pSubLink = (PSINGLE_LINK_ENTRY )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PCOSA_CONTEXT_LINK_OBJECT pSubCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)NULL; /*free the back end memory*/ CosaDmlNeighdiscIfBERemove(); /* Neighdisc Interface List */ pLink = AnscSListGetFirstEntry(pNeighdiscIFHead); while ( pLink ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pLink); pLink = AnscSListGetNextEntry(pLink); pNeighdiscInterface = (PCOSA_DML_NEIGHDISC_IF_FULL)pCosaContext->hContext; if ( pNeighdiscInterface ) { AnscSListPopEntryByLink(pNeighdiscIFHead, &pCosaContext->Linkage); AnscFreeMemory(pNeighdiscInterface); AnscFreeMemory(pCosaContext); } } /* Remove self */ pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderNeighdiscInterfaceHA; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderNeighdiscInterface; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS WebVhoDelGso ( ANSC_HANDLE hThisObject, ULONG ulSessionId, PUCHAR address, USHORT port ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PWEB_VIRTUAL_HOST_OBJECT pMyObject = (PWEB_VIRTUAL_HOST_OBJECT )hThisObject; PWEB_VIRTUAL_HOST_PROPERTY pProperty = (PWEB_VIRTUAL_HOST_PROPERTY)&pMyObject->Property; PHTTP_HFP_INTERFACE pHfpIf = (PHTTP_HFP_INTERFACE )pMyObject->hHfpIf; PWEB_LSM_INTERFACE pLsmIf = (PWEB_LSM_INTERFACE )pMyObject->hLsmIf; PWEB_GENERAL_SESSION_OBJECT pSession = NULL; ULONG ulClientAddr = 0; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; ULONG ulHashIndex = AnscHashUlong(ulSessionId, WEB_VHO_GSO_TABLE_SIZE); AnscAcquireLock(&pMyObject->GsoTableLock); pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->GsoTable[ulHashIndex]); while ( pSLinkEntry ) { pSession = ACCESS_WEB_GENERAL_SESSION_OBJECT(pSLinkEntry); ulClientAddr = *(PULONG)pSession->GetClientAddr((ANSC_HANDLE)pSession); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); if ( (pSession->GetSessionId((ANSC_HANDLE)pSession) == ulSessionId ) && (ulClientAddr == AnscReadUlong(address)) ) { AnscSListPopEntryByLink(&pMyObject->GsoTable[ulHashIndex], &pSession->Linkage); pSession->AcquireAccess((ANSC_HANDLE)pSession); returnStatus = pLsmIf->EndSession ( pLsmIf->hOwnerContext, (ANSC_HANDLE)pSession ); pSession->ReleaseAccess((ANSC_HANDLE)pSession); pSession->Cancel ((ANSC_HANDLE)pSession); pSession->Remove ((ANSC_HANDLE)pSession); } } AnscReleaseLock(&pMyObject->GsoTableLock); return ANSC_STATUS_SUCCESS; }
ANSC_STATUS CosaDdnsRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_DDNS pMyObject = (PCOSA_DATAMODEL_DDNS )hThisObject; PSLIST_HEADER pListHead = (PSLIST_HEADER )&pMyObject->ContextHead; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoDdns = (PPOAM_IREP_FOLDER_OBJECT )pMyObject->hIrepFolderDdns; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFo = (PPOAM_IREP_FOLDER_OBJECT )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PCOSA_DML_DDNS_SERVICE pDdnsEntry = (PCOSA_DML_DDNS_SERVICE )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; /* Remove necessary resounce */ pSLinkEntry = AnscSListGetFirstEntry(pListHead); while ( pSLinkEntry ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pDdnsEntry = (PCOSA_DML_DDNS_SERVICE)pCosaContext->hContext; if ( pDdnsEntry ) { AnscSListPopEntryByLink(pListHead, &pCosaContext->Linkage); AnscFreeMemory(pDdnsEntry); pPoamIrepFo = pCosaContext->hPoamIrepFo; if ( pPoamIrepFo ) { pPoamIrepFo->Remove((ANSC_HANDLE)pPoamIrepFo); } AnscFreeMemory(pCosaContext); } } if ( pPoamIrepFoDdns ) { pPoamIrepFoDdns->Remove((ANSC_HANDLE)pPoamIrepFoDdns); } /* Remove self */ AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS BwrmPmoDelPage ( ANSC_HANDLE hThisObject, char* root_path, char* file_path ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PBWRM_PAGE_MANAGER_OBJECT pMyObject = (PBWRM_PAGE_MANAGER_OBJECT )hThisObject; PBWRM_PAGE_MANAGER_PROPERTY pProperty = (PBWRM_PAGE_MANAGER_PROPERTY )&pMyObject->Property; PANSC_TIMER_DESCRIPTOR_OBJECT pCacheTimerObject = (PANSC_TIMER_DESCRIPTOR_OBJECT)pMyObject->hCacheTimerObject; PBWRM_COOKED_PAGE_OBJECT pCookedPage = (PBWRM_COOKED_PAGE_OBJECT )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; ULONG ulHashIndex = (ULONG )AnscHashString(file_path, AnscSizeOfString(file_path), BWRM_PMO_CPO_TABLE_SIZE); AnscAcquireLock(&pMyObject->CpoTableLock); pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->CpoTable[ulHashIndex]); while ( pSLinkEntry ) { pCookedPage = ACCESS_BWRM_COOKED_PAGE_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); if ( pCookedPage->MatchPath ( (ANSC_HANDLE)pCookedPage, root_path, file_path ) ) { AnscSListPopEntryByLink(&pMyObject->CpoTable[ulHashIndex], &pCookedPage->Linkage); pCookedPage->Remove((ANSC_HANDLE)pCookedPage); break; } } AnscReleaseLock(&pMyObject->CpoTableLock); if ( pMyObject->GetPageCount((ANSC_HANDLE)pMyObject) == 0 ) { pCacheTimerObject->Stop((ANSC_HANDLE)pCacheTimerObject); } return ANSC_STATUS_SUCCESS; }
ULONG IPv6rdIF_DelEntry( ANSC_HANDLE hInsContext, ULONG hInstance) { PCOSA_DATAMODEL_IPV6RD pMyObject = (PCOSA_DATAMODEL_IPV6RD)g_pCosaBEManager->hIPv6rd; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)hInstance; PCOSA_CONTEXT_LINK_OBJECT pCosaContext2 = NULL; PCOSA_DML_IPV6RD_IF pEntry = (PCOSA_DML_IPV6RD_IF)pCosaContext->hContext; PCOSA_DML_IPV6RD_IF pNewEntry = NULL; PSLIST_HEADER pListHead = (PSLIST_HEADER)&pMyObject->IfList; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; if (CosaDml_IPv6rdDelEntry(NULL, pEntry->InstanceNumber) != ANSC_STATUS_SUCCESS) { CcspTraceError(("IPv6rdIF_DelEntry: CosaDml_IPv6rdDelEntry error\n")); /* may fail if object is add be PSM config is not set. * so do not return here */ /* return ANSC_STATUS_FAILURE; */ } pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->IfList); while (pSLinkEntry) { pCosaContext2 = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pNewEntry = (PCOSA_DML_IPV6RD_IF)pCosaContext2->hContext; if (pNewEntry && AnscEqualString(pNewEntry->Alias, pEntry->Alias, FALSE)) { AnscSListPopEntryByLink(pListHead, &pCosaContext2->Linkage); if (pCosaContext->bNew) CosaIPv6rdIfRegDelInfo((ANSC_HANDLE)pMyObject, (ANSC_HANDLE)pCosaContext2); AnscFreeMemory(pNewEntry); AnscFreeMemory(pCosaContext2); break; } } return ANSC_STATUS_SUCCESS; }
ANSC_HANDLE HttpPsoVer2PopTroBySocket ( ANSC_HANDLE hThisObject, ANSC_HANDLE hSocket ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PHTTP_PSO_VER2_OBJECT pMyObject = (PHTTP_PSO_VER2_OBJECT )hThisObject; PHTTP_ADVANCED_PROXY_OBJECT pAdvancedProxy = (PHTTP_ADVANCED_PROXY_OBJECT)pMyObject->hOwnerContext; PHTTP_TRANS_RECORD_OBJECT pTransRecord = NULL; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; AnscAcquireLock(&pMyObject->TroSListLock); pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->TroSList); while ( pSLinkEntry ) { pTransRecord = ACCESS_HTTP_TRANS_RECORD_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); if ( pTransRecord->hServerSocket == hSocket ) { AnscSListPopEntryByLink(&pMyObject->TroSList, &pTransRecord->Linkage); pTransRecord->AcquireAccess((ANSC_HANDLE)pTransRecord); AnscReleaseLock(&pMyObject->TroSListLock); return (ANSC_HANDLE)pTransRecord; } } AnscReleaseLock(&pMyObject->TroSListLock); return (ANSC_HANDLE)NULL; }
ANSC_STATUS HttpAuthcoAddAuthInfo ( ANSC_HANDLE hThisObject, ANSC_HANDLE hRequest, ANSC_HANDLE hChallenge ) { ANSC_STATUS status = ANSC_STATUS_SUCCESS; PHTTP_AUTH_CLIENT_OBJECT pMyObject = (PHTTP_AUTH_CLIENT_OBJECT)hThisObject; PHTTP_BMO_REQ_OBJECT pRequest = (PHTTP_BMO_REQ_OBJECT )hRequest; PHTTP_AUTH_CHALLENGE pChallenge = (PHTTP_AUTH_CHALLENGE )hChallenge; PHTTP_AUTHO_INFO pAuthInfo = NULL; PHTTP_AUTHO_DIGEST_INFO pDigestInfo = NULL; PHTTP_ACM_INTERFACE pHttpAcmIf = (PHTTP_ACM_INTERFACE )pMyObject->hAcmIf; BOOL bDigestAuth = (pChallenge->AuthType == HTTP_AUTH_TYPE_DIGEST); PUCHAR pHostName = NULL; PUCHAR pUriPath = NULL; USHORT HostPort = 0; BOOL bParentUri = FALSE; if ( !pHttpAcmIf ) { return ANSC_STATUS_INTERNAL_ERROR; } status = pMyObject->GetRequestHostUri((ANSC_HANDLE)pMyObject, hRequest, &pHostName, &HostPort, &pUriPath); if ( status != ANSC_STATUS_SUCCESS ) { status = ANSC_STATUS_INTERNAL_ERROR; goto ABNORM; } AnscAcquireLock(&pMyObject->AuthInfoListLock); pAuthInfo = (PHTTP_AUTHO_INFO)pMyObject->FindAuthInfo2((ANSC_HANDLE)pMyObject, hRequest, &bParentUri); if ( pAuthInfo ) { AnscSListPopEntryByLink(&pMyObject->AuthInfoList, &pAuthInfo->Linkage); HttpAuthInfoRemove(pAuthInfo); pAuthInfo = NULL; } HttpAuthInfoCreate(pAuthInfo); if ( !pAuthInfo ) { status = ANSC_STATUS_RESOURCES; goto EXIT; } if ( bDigestAuth ) { HttpAuthDigestInfoCreate(pAuthInfo->pDigest); if ( !pAuthInfo->pDigest ) { status = ANSC_STATUS_RESOURCES; goto EXIT; } } /* set up authentication info */ pAuthInfo->AuthType = pChallenge->AuthType; status = pHttpAcmIf->GetCredential ( pHttpAcmIf->hOwnerContext, pHostName, HostPort, pUriPath, &pAuthInfo->pUserName, &pAuthInfo->pPassword ); if ( status != ANSC_STATUS_SUCCESS ) { goto EXIT; } pAuthInfo->pHostName = pHostName; pAuthInfo->HostPort = HostPort; pAuthInfo->pUri = pUriPath; if ( !bDigestAuth ) { /* basic authentication */ PHTTP_CHALLENGE_BASIC pBasicChal = &pChallenge->Challenge.Basic; pAuthInfo->pRealm = AnscCloneString(pBasicChal->Realm); } else { /* digest authentication */ PHTTP_CHALLENGE_DIGEST pDigestChal = &pChallenge->Challenge.Digest; PUCHAR pChal = (PUCHAR)pDigestChal->Realm; pMyObject->GetDigestAuthInfo ( (ANSC_HANDLE)pMyObject, (ANSC_HANDLE)pAuthInfo, pChal ); } /* sweep out old entries */ if ( TRUE ) { ULONG ulCount = (ULONG)AnscSListQueryDepth(&pMyObject->AuthInfoList); while ( ulCount >= pMyObject->AuthInfoMaxCount ) { PSINGLE_LINK_ENTRY pLastEntry = NULL; pLastEntry = AnscSListGetLastEntry(&pMyObject->AuthInfoList); AnscSListPopEntryByLink(&pMyObject->AuthInfoList, pLastEntry); ulCount --; } } AnscSListPushEntry(&pMyObject->AuthInfoList, &pAuthInfo->Linkage); status = ANSC_STATUS_SUCCESS; EXIT: AnscReleaseLock(&pMyObject->AuthInfoListLock); ABNORM: if ( status != ANSC_STATUS_SUCCESS ) { if ( pHostName ) { AnscFreeMemory(pHostName); } if ( pUriPath ) { AnscFreeMemory(pUriPath); } if ( pAuthInfo ) { HttpAuthInfoRemove(pAuthInfo); } } return status; }
ANSC_HANDLE HttpAuthcoFindAuthInfo2 ( ANSC_HANDLE hThisObject, ANSC_HANDLE hRequest, PBOOL pbParentUri ) { ANSC_STATUS status = ANSC_STATUS_SUCCESS; PHTTP_AUTH_CLIENT_OBJECT pMyObject = (PHTTP_AUTH_CLIENT_OBJECT)hThisObject; PHTTP_BMO_REQ_OBJECT pRequest = (PHTTP_BMO_REQ_OBJECT )hRequest; PHTTP_AUTHO_INFO pAuthInfo = NULL; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; ANSC_HANDLE hAuthInfo = (ANSC_HANDLE)NULL; PUCHAR pHostName = NULL; PUCHAR pUriPath = NULL; USHORT HostPort = 0; PUCHAR pDomain = NULL; PUCHAR pMatchStr; *pbParentUri = FALSE; status = pMyObject->GetRequestHostUri((ANSC_HANDLE)pMyObject, hRequest, &pHostName, &HostPort, &pUriPath); if ( status != ANSC_STATUS_SUCCESS || !pUriPath || !pHostName ) { goto EXIT; } pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->AuthInfoList); while (pSLinkEntry) { pAuthInfo = ACCESS_HTTP_AUTHO_INFO_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); if ( pAuthInfo->HostPort != HostPort ) { continue; } if ( !AnscEqualString(pAuthInfo->pHostName, pHostName, FALSE) ) { continue; } if ( AnscEqualString(pAuthInfo->pUri, pUriPath, TRUE ) ) { hAuthInfo = (ANSC_HANDLE)pAuthInfo; break; } pMatchStr = (PUCHAR)_ansc_strstr(pUriPath, pAuthInfo->pUri); if ( pMatchStr == pUriPath ) { hAuthInfo = (ANSC_HANDLE)pAuthInfo; break; } pMatchStr = (PUCHAR)_ansc_strstr(pAuthInfo->pUri, pUriPath); if ( pMatchStr == pAuthInfo->pUri ) { hAuthInfo = (ANSC_HANDLE)pAuthInfo; *pbParentUri = TRUE; break; } if ( pAuthInfo->AuthType == HTTP_AUTH_TYPE_DIGEST ) { PUCHAR *pURIs; ULONG i, ulCount; BOOL bMatch = FALSE; if ( pAuthInfo->pDigest->pDomainURIs ) { ulCount = pAuthInfo->pDigest->pDomainURIs->NumURIs; pURIs = pAuthInfo->pDigest->pDomainURIs->pURIs; for ( i = 0; i < ulCount; i ++) { pMatchStr = (PUCHAR)_ansc_strstr(pUriPath, pURIs[i]); if ( pMatchStr == pUriPath ) { bMatch = TRUE; break; } } if ( bMatch ) { hAuthInfo = (ANSC_HANDLE)pAuthInfo; break; } } else { pDomain = pAuthInfo->pDigest->pDomain; pMatchStr = (PUCHAR)_ansc_strstr(pUriPath, pDomain); if ( pMatchStr == pUriPath ) { hAuthInfo = (ANSC_HANDLE)pAuthInfo; break; } } } } EXIT: if ( pHostName ) { AnscFreeMemory(pHostName); } if ( pUriPath ) { AnscFreeMemory(pUriPath); } /* move this info to front-most */ if ( hAuthInfo ) { pAuthInfo = (PHTTP_AUTHO_INFO)hAuthInfo; AnscSListPopEntryByLink(&pMyObject->AuthInfoList, &pAuthInfo->Linkage); AnscSListPushEntry(&pMyObject->AuthInfoList, &pAuthInfo->Linkage); } return hAuthInfo; }
ANSC_STATUS CosaRARemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_RA pMyObject = (PCOSA_DATAMODEL_RA)hThisObject; PSLIST_HEADER pRAIFHead = (PSLIST_HEADER)&pMyObject->InterfaceList; PSLIST_HEADER pRAOptionHead = (PSLIST_HEADER)NULL; PCOSA_DML_RA_IF_FULL2 pRAInterface = (PCOSA_DML_RA_IF_FULL2)NULL; PCOSA_DML_RA_OPTION pRAOption = (PCOSA_DML_RA_OPTION)NULL; PSINGLE_LINK_ENTRY pLink = (PSINGLE_LINK_ENTRY )NULL; PSINGLE_LINK_ENTRY pSubLink = (PSINGLE_LINK_ENTRY )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PCOSA_CONTEXT_LINK_OBJECT pSubCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)NULL; /*free the back end memory*/ CosaDmlRaIfBERemove(); /* RA Interface List */ pLink = AnscSListGetFirstEntry(pRAIFHead); while ( pLink ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pLink); pLink = AnscSListGetNextEntry(pLink); pRAInterface = (PCOSA_DML_RA_IF_FULL2)pCosaContext->hContext; if ( pRAInterface ) { AnscSListPopEntryByLink(pRAIFHead, &pCosaContext->Linkage); pRAOptionHead = &pRAInterface->OptionList; /* Option List */ pSubLink = AnscSListGetFirstEntry(pRAOptionHead); while ( pSubLink ) { pSubCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSubLink); pSubLink = AnscSListGetNextEntry(pSubLink); pRAOption = (PCOSA_DML_RA_OPTION)pSubCosaContext->hContext; AnscSListPopEntryByLink(pRAOptionHead, &pSubCosaContext->Linkage); if ( pRAOption ) { AnscFreeMemory(pRAOption); } AnscFreeMemory(pSubCosaContext); } AnscFreeMemory(pRAInterface); AnscFreeMemory(pCosaContext); } } /* Remove self */ pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderRAInterfaceHA; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderRAInterface; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }