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