# HG changeset patch # User hgs # Date 1286186743 -19800 # Node ID b91bcc4b38e433c817a7806394bb7ea0de8f6e8d # Parent cfbc3a3bd32bf97c1375974990a57ab7e945747f 201039_01 diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.cpp --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -1,4 +1,4 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -766,6 +766,49 @@ return manager; } + +/* +* The below function selects correct NTLM connection manger. Connection manager is associate with a socket. +* NTLM protocol needs all authentication messages Negotiate(->),Challenge(<-) and Authorise(->) packets +* to be sent on the same port. In this function, the connection manager is identified by NTLM id which is set +* when CHttpResponseParser when 401 unauthorised message is received from ntlm enabled server. +* The same iNtlmConnId will be maintained until authentication is successful. +*/ +CHttpConnectionManager* CHttpClientHandler::SelectNtlmConnectionL(const CHttpConnectionInfo& aConnectionInfo,RHTTPTransaction aTrans) + { + + TInt ntlmConnId; + CHttpConnectionManager* fourthChoice=NULL; + _LIT8( KNtlmId, "NTLMConnId" ); + RStringPool stringPool = aTrans.Session().StringPool(); + RStringF ntlmId = stringPool.OpenFStringL( KNtlmId ); + THTTPHdrVal value; + + if (aTrans.PropertySet().Property(ntlmId,value)) + { + ntlmConnId = value.Int(); + for (TInt i=0;iConnectionInfo(); + if( connectionInfo.HostAndPortMatches(aConnectionInfo) ) + { + if (iConnectionManagers[i]->GetNtlmConnId() == ntlmConnId) + { + ntlmId.Close(); + return iConnectionManagers[i]; + } + } + else + { + fourthChoice = iConnectionManagers[i]; + } + } + } + ntlmId.Close(); + return fourthChoice; + } + + TInt CHttpClientHandler::MaxNumConnectionManagers() const { // Has this value been previously cached? @@ -930,8 +973,31 @@ } else { - // Look for a normal connection. - isNewConnection = SelectConnectionManagerL(*info, aTrans.Transaction(), canPipeline, manager); + THTTPHdrVal value; + _LIT8( KNtlmStateStr, "NTLMState" ); + RStringPool stringPool = iSession.StringPool(); + RStringF strF = stringPool.OpenFStringL( KNtlmStateStr ); + CleanupClosePushL(strF); + if ( aTrans.Transaction().PropertySet().Property( strF, value ) && (value.Int() == ENtlmNegotiate || value.Int() == ENtlmAuthenticate) ) + { + manager = SelectNtlmConnectionL(*info,aTrans.Transaction()); + if (manager == NULL) + { + __FLOG_0(_T8("No NTLM connection manger!!!")); + } + else if (value.Int() == ENtlmAuthenticate) + { +#if defined (_DEBUG) && defined (_LOGGING) + __FLOG_1(_T8(" NTLM AUTH msg Id %d and resetting to -1"),manager->GetNtlmConnId()); +#endif + manager->SetNtlmConnId(KErrNotFound);//reset it + } + } + else// Look for a normal connection. + { + isNewConnection = SelectConnectionManagerL(*info, aTrans.Transaction(), canPipeline, manager); + } + CleanupStack::PopAndDestroy(&strF); } if( manager != NULL ) diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.h --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.h Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.h Mon Oct 04 15:35:43 2010 +0530 @@ -1,4 +1,4 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -34,6 +34,15 @@ class TDNInfo; class CHttpPipelineFallback; +/** + * Enumeration for NTLM authentication state. + */ +enum { + ENtlmIdle, + ENtlmNegotiate, + ENtlmAuthenticate + }; + class CHttpClientHandler : public CProtocolHandler, public MConnectionPrefsProvider, public MRxDataObserver, @@ -93,6 +102,7 @@ void AddTunnelInfoL(RHTTPTransaction aTrans, const TDesC8& aHost, TInt aPort); TBool SelectConnectionManagerL(const CHttpConnectionInfo& aConnectionInfo, RHTTPTransaction aTrans, TBool aCanPipeline, CHttpConnectionManager *&aManager); CHttpConnectionManager* SelectTunnelConnectionL(const CHttpConnectionInfo& aConnectionInfo, RHTTPTransaction aTrans, TBool aCanPipeline); + CHttpConnectionManager* SelectNtlmConnectionL(const CHttpConnectionInfo& aConnectionInfo,RHTTPTransaction aTrans); TInt MaxNumConnectionManagers() const; void SetupProxyInformation(RHTTPTransaction aTrans); TBool CheckPipelineSupport(RHTTPTransaction aTrans); diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -314,7 +314,9 @@ // The request has not been made - just need to remove the request and // response objects from the pending queues. iPendingRequests.Remove(requestIndex); - iPendingResponses.Remove(responseIndex); + + if (KErrNotFound != responseIndex) + iPendingResponses.Remove(responseIndex); } else if( responseIndex != KErrNotFound ) { diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.h --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.h Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.h Mon Oct 04 15:35:43 2010 +0530 @@ -129,6 +129,8 @@ void DisablePipelining(); void AppendPipelineFailedHost(const TDesC8& aHost); inline TBool SecureRetry(){ return iSecureRetry;} + inline void SetNtlmConnId(TInt aId){ iNtlmId=aId;} + inline TInt GetNtlmConnId(){ return iNtlmId;} @@ -237,6 +239,7 @@ TBool iSecureRetry; TBool iEnableOptimalPipeline; TBool iTunnel; + TInt iNtlmId; TInt iMaxTransactionsToPipeline; TBitFlags8 iFlags; MSocketFactory& iSocketFactory; diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerpluginsandutils/httpprotocolplugins/httpclient/chttpresponseparser.cpp --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpresponseparser.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpresponseparser.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -1,4 +1,4 @@ -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -20,6 +20,7 @@ #include #include #include +#include #include "chttpclienttransaction.h" #include "chttpconnectionmanager.h" @@ -497,6 +498,40 @@ manager->AppendPipelineFailedHost(hostVal.StrF().DesC()); } } + + if (name.DesC().CompareF(stringPool.StringF(HTTP::EWWWAuthenticate,RHTTPSession::GetTable()).DesC()) == KErrNone) + { + _LIT8(KNtlmProtocolName,"NTLM"); + if (aFieldValue.FindF(KNtlmProtocolName)!= KErrNotFound) + { + CHttpClientTransaction& protTran = static_cast(*iProtTrans); + CHttpConnectionManager* manager = protTran.ConnectionManager(); + _LIT8( KNtlmConnId, "NTLMConnId" ); + if (aFieldValue.Length() >= 4 ) + { + if (manager->GetNtlmConnId() == KErrNotFound) + { + TInt ntmlConnId= Math::Random()%5789; //some magic number to get random connection id + manager->SetNtlmConnId(ntmlConnId); + RStringF ntlmId= stringPool.OpenFStringL( KNtlmConnId ); + CleanupClosePushL(ntlmId); + THTTPHdrVal value; + value.SetInt( ntmlConnId ); + trans.PropertySet().SetPropertyL( ntlmId, value ); + CleanupStack::PopAndDestroy(&ntlmId); + } + else + { + RStringF ntlmId= stringPool.OpenFStringL( KNtlmConnId ); + CleanupClosePushL(ntlmId); + THTTPHdrVal value; + value.SetInt(manager->GetNtlmConnId()); + trans.PropertySet().SetPropertyL( ntlmId, value ); + CleanupStack::PopAndDestroy(&ntlmId); + } + } + } + } CleanupStack::PopAndDestroy(&name); diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerpluginsandutils/uripermissionservices/server/src/tldlistinitializer.cpp --- a/applayerpluginsandutils/uripermissionservices/server/src/tldlistinitializer.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerpluginsandutils/uripermissionservices/server/src/tldlistinitializer.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -266,7 +266,8 @@ // Store the TLD name for later use __ASSERT_ALWAYS(KLocalName8.CompareF( KName ) == 0, User::Invariant() ); iTldName.Close(); - iTldName.Create( KAttribute.Value().DesC() ); + TInt err = iTldName.Create( KAttribute.Value().DesC() ); + __ASSERT_ALWAYS(KErrNone == err, User::Invariant() ); break; } } diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerpluginsandutils/uripermissionservices/server/src/urilistinterface.cpp --- a/applayerpluginsandutils/uripermissionservices/server/src/urilistinterface.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerpluginsandutils/uripermissionservices/server/src/urilistinterface.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -668,7 +668,8 @@ CleanupStack::PushL ( TCleanupItem ( CUriListInterface::DestroyTransObj, dbTrans ) ); TInt lt = aQueryArgs.Get ( TPolicyQueryArgs::ETldListType ); RBuf8 upperCaseUri; - upperCaseUri.Create(aUri); + CleanupClosePushL(upperCaseUri); + upperCaseUri.CreateL(aUri); upperCaseUri.UpperCase(); dbTrans->BindTextL(0, aUri); dbTrans->BindIntL(1, lt); @@ -676,7 +677,7 @@ // Execute the query CUriQueryFilter* queryFilter = CTldPolicyDataFilter::NewL ( dbTrans ); - upperCaseUri.Close(); + CleanupStack::PopAndDestroy (); //upperCaseUri CleanupStack::Pop (); // dbTrans return queryFilter; // return the queryFilter } @@ -1244,6 +1245,8 @@ HBufC8* tldPtr; User::LeaveIfError ( tldUri1.Parse ( aUri ) ); TBool isSchemePresent = tldUri1.IsPresent( EUriScheme ); + CleanupClosePushL ( tld ); + CleanupClosePushL ( customisedUri ); if (!isSchemePresent) { _LIT8(KHttp, "http://"); @@ -1251,26 +1254,26 @@ urirbuf.CleanupClosePushL(); urirbuf.CreateL(KHttp,aUri.Length()+7); urirbuf.Append(aUri); - customisedUri.Create( DoNormalisationLC ( urirbuf ) ); + customisedUri.CreateL( DoNormalisationLC ( urirbuf ) ); TUriParser8 tldUri2; User::LeaveIfError ( tldUri2.Parse ( customisedUri ) ); __ASSERT_ALWAYS(tldUri2.IsPresent( EUriHost ), User::Invariant()); - tld.Create( tldUri2.Extract(EUriHost) ); + tld.CreateL( tldUri2.Extract(EUriHost) ); tldPtr = tld.AllocL(); CleanupStack::PopAndDestroy(2); //calls aRBuf.Close()and DoNormalisationLC pop } else { - customisedUri.Create( DoNormalisationLC ( aUri ) ); + customisedUri.CreateL( DoNormalisationLC ( aUri ) ); User::LeaveIfError ( tldUri1.Parse ( customisedUri ) ); __ASSERT_ALWAYS(tldUri1.IsPresent( EUriHost ), User::Invariant()); - tld.Create( tldUri1.Extract(EUriHost) ); + tld.CreateL( tldUri1.Extract(EUriHost) ); tldPtr = tld.AllocL(); CleanupStack::PopAndDestroy ();//objects added in DoNormalisationLC } - tld.Close(); - customisedUri.Close(); + CleanupStack::PopAndDestroy (); //customisedUri + CleanupStack::PopAndDestroy (); //tld return tldPtr; } diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerprotocols/ftpengine/consui/CONSUI.CPP --- a/applayerprotocols/ftpengine/consui/CONSUI.CPP Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerprotocols/ftpengine/consui/CONSUI.CPP Mon Oct 04 15:35:43 2010 +0530 @@ -48,8 +48,7 @@ // TPtrC DNSName(_L("radian.ee.ic.ac.uk")); // - myFtpUI = new (ELeave) CFtpUI; - CleanupStack::PushL(myFtpUI); + myFtpUI = CFtpUI::NewLC(); CActiveScheduler* exampleScheduler=new (ELeave) CActiveScheduler; CleanupStack::PushL(exampleScheduler); CActiveScheduler::Install(exampleScheduler); diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerprotocols/ftpengine/consui/FTPUI.CPP --- a/applayerprotocols/ftpengine/consui/FTPUI.CPP Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerprotocols/ftpengine/consui/FTPUI.CPP Mon Oct 04 15:35:43 2010 +0530 @@ -237,6 +237,27 @@ } } + +CFtpUI* CFtpUI::NewL() + { + CFtpUI* self = CFtpUI::NewLC(); + CleanupStack::Pop(); + return self; + } + +CFtpUI* CFtpUI::NewLC() + { + CFtpUI* self = new(ELeave) CFtpUI(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CFtpUI::ConstructL() + { + User::LeaveIfError(iFs.Connect(KFileServerDefaultMessageSlots)); + } + CFtpUI::CFtpUI(void) { iCurCmd = EInvalid ; @@ -244,7 +265,6 @@ iOpenMode = CFTPSession::EOverwrite; iType = CFTPSession::EBinary; iState = EInputCmd; -iFs.Connect(KFileServerDefaultMessageSlots); } CFtpUI::~CFtpUI(void) diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerprotocols/ftpengine/consui/FTPUI.H --- a/applayerprotocols/ftpengine/consui/FTPUI.H Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerprotocols/ftpengine/consui/FTPUI.H Mon Oct 04 15:35:43 2010 +0530 @@ -37,6 +37,16 @@ */ { public: + static CFtpUI* NewL(); + static CFtpUI* NewLC(); + + ~CFtpUI(void); + +private: + CFtpUI(void); + void ConstructL(); + +public: /** Console callback Minterface */ void CmdReady(void); void Escape(void); @@ -63,8 +73,7 @@ /** Message reported by server */ void ServerMessage(const TDesC8&); /** FTP User interface specific methods */ - CFtpUI(void); - ~CFtpUI(void); + /** Execute a previously parsed command */ TBool Execute(void); void SetConsole(CConsoleBase*); diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerprotocols/httpservice/inc/chttpservice.h --- a/applayerprotocols/httpservice/inc/chttpservice.h Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerprotocols/httpservice/inc/chttpservice.h Mon Oct 04 15:35:43 2010 +0530 @@ -62,7 +62,8 @@ private: CHttpService(); - void ConstructL(); + void ConstructL(); + void RemoveUnwantedFilters(); NONSHARABLE_CLASS(CHttpServiceStruct) : public CBase { diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerprotocols/httpservice/src/chttpservice.cpp --- a/applayerprotocols/httpservice/src/chttpservice.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerprotocols/httpservice/src/chttpservice.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -23,7 +23,8 @@ /** * The default 2-phase constructor to create a CHttpService instance - * + * @publishedAll + * @prototype */ EXPORT_C CHttpService* CHttpService::NewL() { @@ -35,6 +36,8 @@ } /** * Destructor + * @publishedAll + * @prototype */ EXPORT_C CHttpService::~CHttpService() @@ -63,6 +66,9 @@ * * @return KErrNotFound if the string ID is not found in the HTTP string pool * otherwise KErrNone for success + * + * @publishedAll + * @prototype */ EXPORT_C TInt CHttpService::String(TInt aStringId, TPtrC8& aPtr) { @@ -105,7 +111,9 @@ * * @return Proxy address otherwise KNullDesC8 if the proxy information * is not set. - * + * + * @publishedAll + * @prototype */ EXPORT_C const TDesC8& CHttpService::ProxyAddress() const @@ -130,6 +138,9 @@ * at any time. The default no. of connections that the CHttpService instance uses is 6. * * @param aValue aValue No. of connections + * + * @publishedAll + * @prototype */ EXPORT_C void CHttpService::SetMaxConnections(TInt aValue) @@ -160,7 +171,13 @@ return 0; } - +/** + * Sets the maximum number of transactions to be pipelined. + * @param aValue - number of transactions + * + * @publishedAll + * @prototype + */ EXPORT_C void CHttpService::SetMaxTransactionsToPipeline(TInt aValue) { RHTTPSession sess = iHttpServiceStruct->iHttpSession; @@ -169,7 +186,13 @@ connInfo.SetProperty(sp.StringF(HTTP::EMaxNumTransactionsToPipeline, RHTTPSession::GetTable()), THTTPHdrVal(aValue)); } - + +/** + * Returns the maximum number of transactions to be pipelined. + * + * @publishedAll + * @prototype + */ EXPORT_C TInt CHttpService::MaxTransactionsToPipeline() const { RHTTPSession sess = iHttpServiceStruct->iHttpSession; @@ -190,6 +213,9 @@ * * @param aStringId - Pre-defined String ID in the HTTP string pool * @param aHeaderValue - Value for the header + * + * @publishedAll + * @prototype */ EXPORT_C TInt CHttpService::AddRequestHeader(TInt aStringId, const THttpHeaderValueVariant& aHeaderValue) { @@ -207,6 +233,9 @@ * * @param aHeaderName - Custom header name * @param aHeaderValue - Value for the header + * + * @publishedAll + * @prototype */ EXPORT_C TInt CHttpService::AddCustomRequestHeader(const TDesC8& aHeaderName, const TDesC8& aHeaderValue) { @@ -222,6 +251,14 @@ return err; } +/** + * This method facilitates to set to construct the authentication credentials to be passed by the application + * The derived class from MHTTPServiceAuthentication will be called from the framework, if authentication is required. + * @param aCallback - Derived class from MHTTPServiceAuthentication + * + * @publishedAll + * @prototype + */ EXPORT_C TInt CHttpService::SetAuthentication(MHTTPServiceAuthentication* aCallback) { TInt error = KErrGeneral; @@ -247,10 +284,50 @@ SetMaxConnections(KMaxNoOfConnections); SetMaxTransactionsToPipeline(KMaxTransToPipeline); } - + +/** + * returns the CHttpNetworkConnection instance created by the framework. + * The class can be used to set the connection properties. + * + * @publishedAll + * @prototype + */ EXPORT_C CHttpNetworkConnection* CHttpService::HttpNetworkConnection() { CHttpNetworkConnection *httpNetworkConn = CHttpNetworkConnection::New(); httpNetworkConn->SetHttpService(this); return httpNetworkConn; } + +void CHttpService::RemoveUnwantedFilters() + { + THTTPFilterRegistration filterInfo; + RStringPool stringPool = iHttpServiceStruct->iHttpSession.StringPool(); + + RHTTPFilterCollection filterArray = iHttpServiceStruct->iHttpSession.FilterCollection(); + THTTPFilterIterator iter = filterArray.Query(); + const TStringTable& st = RHTTPSession::GetTable(); + + iter.First(); + + while (!iter.AtEnd()) + { + // Get next filter registration info + filterInfo = iter(); + RStringF filterName = stringPool.StringF(filterInfo.iName); + switch(filterName.Index(st)) + { + //dont remove these filters + case HTTP::EClient: + case HTTP::EProtocolHandler: + case HTTP::EValidation: + case HTTP::ERedirect: + case HTTP::EHttpConnectFilter: + break; + //anything other than above, remove. + default: + filterArray.RemoveFilter(filterName); + } + ++iter; + } + } diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerprotocols/httptransportfw/group/HttpClientErr.rss --- a/applayerprotocols/httptransportfw/group/HttpClientErr.rss Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerprotocols/httptransportfw/group/HttpClientErr.rss Mon Oct 04 15:35:43 2010 +0530 @@ -65,4 +65,5 @@ -#include "HttpClientErr.ra" \ No newline at end of file +#include "HttpClientErr.ra" + diff -r cfbc3a3bd32b -r b91bcc4b38e4 applayerprotocols/httptransportfw/utils/TimerLogger.cpp --- a/applayerprotocols/httptransportfw/utils/TimerLogger.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/applayerprotocols/httptransportfw/utils/TimerLogger.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -86,7 +86,8 @@ TTimeIntervalMicroSeconds iTimeDifference = iEndTime.MicroSecondsFrom(iStartTime); _LIT(KTimeDiff, ",%d microseconds\n"); RBuf myBuf; - myBuf.Create (aComment.Length()+64); + TInt err = myBuf.Create (aComment.Length()+64); + __ASSERT_ALWAYS(KErrNone == err, User::Invariant() ); myBuf.Append (aComment ); myBuf.AppendFormat(KTimeDiff, iTimeDifference.Int64()); LogIt(myBuf); diff -r cfbc3a3bd32b -r b91bcc4b38e4 build.config.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build.config.xml Mon Oct 04 15:35:43 2010 +0530 @@ -0,0 +1,30 @@ + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r cfbc3a3bd32b -r b91bcc4b38e4 httpfilters/cookie/ManagerSrc/CookieClientDataArray.cpp --- a/httpfilters/cookie/ManagerSrc/CookieClientDataArray.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/httpfilters/cookie/ManagerSrc/CookieClientDataArray.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -52,11 +52,11 @@ CCookieClientDataArray::~CCookieClientDataArray() { CLOG( ( EClient, 0, _L( "-> CCookieClientDataArray::~CCookieClientDataArray" ) ) ); - if(iCookieClientData && iCookieClientData->Count()) + if(iCookieClientData) { iCookieClientData->ResetAndDestroy(); iCookieClientData->Close(); - //delete iCookieClientData; + delete iCookieClientData; iCookieClientData = NULL; } CLOG( ( EClient, 0, _L( "<- CCookieClientDataArray::~CCookieClientDataArray" ) ) ); diff -r cfbc3a3bd32b -r b91bcc4b38e4 httpfilters/cookie/ManagerSrc/CookieGroupDataArray.cpp --- a/httpfilters/cookie/ManagerSrc/CookieGroupDataArray.cpp Mon Sep 27 10:31:51 2010 +0530 +++ b/httpfilters/cookie/ManagerSrc/CookieGroupDataArray.cpp Mon Oct 04 15:35:43 2010 +0530 @@ -75,11 +75,11 @@ CCookieGroupDataArray::~CCookieGroupDataArray() { CLOG( ( EClient, 0, _L( "-> CCookieGroupDataArray::~CCookieGroupDataArray" ) ) ); - if(iCookieGroupData && Count()) + if(iCookieGroupData) { iCookieGroupData->ResetAndDestroy(); iCookieGroupData->Close(); - //delete iCookieGroupData; + delete iCookieGroupData; iCookieGroupData = NULL; } CLOG( ( EClient, 0, _L( "<- CCookieGroupDataArray::~CCookieGroupDataArray" ) ) );