201039_01 PDK_4.0.a
authorhgs
Mon, 04 Oct 2010 15:35:43 +0530
changeset 49 b91bcc4b38e4
parent 48 cfbc3a3bd32b
201039_01
applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.cpp
applayerpluginsandutils/httpprotocolplugins/httpclient/chttpclienthandler.h
applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp
applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.h
applayerpluginsandutils/httpprotocolplugins/httpclient/chttpresponseparser.cpp
applayerpluginsandutils/uripermissionservices/server/src/tldlistinitializer.cpp
applayerpluginsandutils/uripermissionservices/server/src/urilistinterface.cpp
applayerprotocols/ftpengine/consui/CONSUI.CPP
applayerprotocols/ftpengine/consui/FTPUI.CPP
applayerprotocols/ftpengine/consui/FTPUI.H
applayerprotocols/httpservice/inc/chttpservice.h
applayerprotocols/httpservice/src/chttpservice.cpp
applayerprotocols/httptransportfw/group/HttpClientErr.rss
applayerprotocols/httptransportfw/utils/TimerLogger.cpp
build.config.xml
httpfilters/cookie/ManagerSrc/CookieClientDataArray.cpp
httpfilters/cookie/ManagerSrc/CookieGroupDataArray.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;i<iConnectionManagers.Count();i++)
+            {
+            const CHttpConnectionInfo& connectionInfo = iConnectionManagers[i]->ConnectionInfo();
+            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 )
--- 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);
--- 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 )
 		{
--- 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;
--- 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 <http/rhttpheaders.h>
 #include <http/framework/mrxdataobserver.h>
 #include <httperr.h>
+#include <e32math.h>
 
 #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<CHttpClientTransaction&>(*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);
 		
--- 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;	
 			}
 		}
--- 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;
 	}	
 
--- 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);
--- 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)
--- 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*);
--- 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
 		{
--- 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;
+        }
+    }
--- 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"
+
--- 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);
--- /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 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+  <!ENTITY layer_real_source_path "sf/mw/netprotocols">
+]>
+
+<SystemDefinition name="netprotocols" schema="1.4.0">
+	<systemModel>
+		<layer name="mw_layer">
+			<module name="netprotocols">
+				<unit unitID="production1" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\bookmarksupport\group" name="production1" />
+				<unit unitID="production2" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\bookmarksupport\test\Integration\TestBookmarksSuite" name="production2" />
+				<unit unitID="production3" mrp="" bldFile="\sf\mw\netprotocols\applayerprotocols\httptransportfw\group\build_all" name="production3" />
+				<unit unitID="production4" mrp="" bldFile="\sf\mw\netprotocols\applayerprotocols\httptransportfw\Test\integration\group" name="production4" />
+				<unit unitID="production5" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\uripermissionservices\group" name="production5" />
+				<unit unitID="production6" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\uripermissionservices\Test\integration\testwhitelistblacklisturisuite\group" name="production6" />
+			</module>
+		</layer>
+		<layer name="api_test_layer">
+			<module name="netprotocols_test">
+				<unit unitID="test1" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\bookmarksupport\group" name="test1" />
+				<unit unitID="test2" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\bookmarksupport\test\Integration\TestBookmarksSuite" name="test2" />
+				<unit unitID="test3" mrp="" bldFile="\sf\mw\netprotocols\applayerprotocols\httptransportfw\group\build_all" name="test3" />
+				<unit unitID="test4" mrp="" bldFile="\sf\mw\netprotocols\applayerprotocols\httptransportfw\Test\integration\group" name="test4" />
+				<unit unitID="test5" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\uripermissionservices\group" name="test5" />
+				<unit unitID="test6" mrp="" bldFile="\sf\mw\netprotocols\applayerpluginsandutils\uripermissionservices\Test\integration\testwhitelistblacklisturisuite\group" name="test6" />
+				<unit unitID="test7" mrp="" bldFile="\sf\mw\netprotocols\applayerprotocols\httpservice\group" name="test7" />
+		</module>
+		</layer>
+	</systemModel>
+</SystemDefinition>
--- 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" ) ) );
--- 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" ) ) );