# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1268401546 -7200 # Node ID 337070b4fa18860d8497975b6802fda9f8c3efab # Parent 5ee1d9ce5878a3e8f601d84e132158a80ade7ae9 Revision: 201004 Kit: 201008 diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp Fri Mar 12 15:45:46 2010 +0200 @@ -18,6 +18,7 @@ #include #include #include +#include #include "msocketfactory.h" #include "msocketconnector.h" @@ -585,7 +586,14 @@ ); } #endif - if ( ( aError == KErrEof || aError == KErrCancel ) ) + if ((aError == KErrSSLAlertUnexpectedMessage || aError == KErrSSLAlertHandshakeFailure) && !iSecureRetry) + { + //TSW error id - TKOO-7YUCA3 + //some websites dont support tls1.0 & retry secure negotiation with ssl3.0 & error value modified to KErrEof for retrying + iSecureRetry = ETrue; + aError = KErrEof; + } + if ( aError == KErrEof || aError == KErrCancel ) { if ( IsPendingWriteInConnectedState() && !iCurrentRequest->NeedDisconnectNotification() ) { @@ -1210,6 +1218,9 @@ void CHttpConnectionManager::SecureClientCnf() { __ASSERT_DEBUG( iState == EUpgrading, User::Invariant() ); + + iSecureRetry = EFalse; //reset the flag + #if defined (_DEBUG) && defined (_LOGGING) __FLOG_0(_T8("!! Secure connection establised")); diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.h --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.h Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.h Fri Mar 12 15:45:46 2010 +0200 @@ -128,6 +128,8 @@ void CheckRequestComplete(MHttpRequest& aRequest); void DisablePipelining(); void AppendPipelineFailedHost(const TDesC8& aHost); + inline TBool SecureRetry(){ return iSecureRetry;} + private: // methods from MHttpRequestObserver @@ -232,6 +234,7 @@ EDiscardSndDataCnf = 3 }; private: + TBool iSecureRetry; TBool iEnableOptimalPipeline; TBool iTunnel; TInt iMaxTransactionsToPipeline; diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httpprotocolplugins/httpclient/chttprequestbatcher.cpp --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttprequestbatcher.cpp Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttprequestbatcher.cpp Fri Mar 12 15:45:46 2010 +0200 @@ -265,6 +265,11 @@ Cancel(); iObserver->OutputStreamCloseInd(aError); } + +TBool CHttpRequestBatcher::SecureRetry() + { + return iObserver->SecureRetry(); + } void CHttpRequestBatcher::MOutputStreamObserver_Reserved() { diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httpprotocolplugins/httpclient/chttprequestbatcher.h --- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttprequestbatcher.h Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttprequestbatcher.h Fri Mar 12 15:45:46 2010 +0200 @@ -54,6 +54,8 @@ virtual void Reset (); + TBool SecureRetry(); + virtual void SetTCPCorking(TBool aValue); private: // methods from MOutputStreamObserver virtual void SendDataCnfL(); diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httptransportplugins/httptransporthandler/chttpsecuresocket.h --- a/applayerpluginsandutils/httptransportplugins/httptransporthandler/chttpsecuresocket.h Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/chttpsecuresocket.h Fri Mar 12 15:45:46 2010 +0200 @@ -36,7 +36,7 @@ inline virtual ~CHttpSecureSocket(); - virtual void StartSecureHandshakeL(TRequestStatus& aStatus, const TDesC8& aHostName) =0; + virtual void StartSecureHandshakeL(TRequestStatus& aStatus, const TDesC8& aHostName,const TDesC& aProtocolVersion) =0; virtual void RecvOneOrMore(TDes8& aBuffer, TRequestStatus& aStatus, TSockXfrLength& aLength) =0; diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httptransportplugins/httptransporthandler/csecuresocketcontroller.cpp --- a/applayerpluginsandutils/httptransportplugins/httptransporthandler/csecuresocketcontroller.cpp Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/csecuresocketcontroller.cpp Fri Mar 12 15:45:46 2010 +0200 @@ -62,7 +62,7 @@ { } -void CSecureSocketController::StartSecureHandshakeL(TRequestStatus& aStatus, const TDesC8& aHostName) +void CSecureSocketController::StartSecureHandshakeL(TRequestStatus& aStatus, const TDesC8& aHostName, const TDesC& aProtocolVersion) /** Start a secure handshake to upgrade the socket to a secure connection. @param aStatus The request status, this will complete with KErrNone @@ -72,10 +72,10 @@ */ { // Create the secure layer - _LIT(KTxtTls, "tls1.0"); if( iTlsSocket == NULL ) - iTlsSocket = CSecureSocket::NewL(iSocket, KTxtTls()); - + { + iTlsSocket = CSecureSocket::NewL(iSocket, aProtocolVersion); + } // Get the security preferences, dialog prompt and security policy TBool dialogPref = ETrue; MSecurityPolicy* securityPolicy = NULL; diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httptransportplugins/httptransporthandler/csecuresocketcontroller.h --- a/applayerpluginsandutils/httptransportplugins/httptransporthandler/csecuresocketcontroller.h Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/csecuresocketcontroller.h Fri Mar 12 15:45:46 2010 +0200 @@ -37,7 +37,7 @@ virtual ~CSecureSocketController(); - void StartSecureHandshakeL(TRequestStatus& aStatus, const TDesC8& aHostName); + void StartSecureHandshakeL(TRequestStatus& aStatus, const TDesC8& aHostName,const TDesC& aProtocolVersion); void RecvOneOrMore(TDes8& aBuffer, TRequestStatus& aStatus, TSockXfrLength& aLength); diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.cpp --- a/applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.cpp Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.cpp Fri Mar 12 15:45:46 2010 +0200 @@ -344,7 +344,7 @@ return KErrNotSupported; } -void CSocket::UpgradeToSecureL(TRequestStatus& aStatus, const TDesC8& aHostName) +void CSocket::UpgradeToSecureL(TRequestStatus& aStatus, const TDesC8& aHostName,const TDesC& aProtocol) /** Asynchronous request to upgrade the socket to a secure socket. @param aStatus The request status, this will complete with KErrNone on the successful @@ -368,7 +368,7 @@ User::Leave(KErrNotSupported); else if (error != KErrNone) User::Leave(error); - iSecureSocketController->StartSecureHandshakeL(aStatus, aHostName); + iSecureSocketController->StartSecureHandshakeL(aStatus, aHostName,aProtocol); } } diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.h --- a/applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.h Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/csocket.h Fri Mar 12 15:45:46 2010 +0200 @@ -84,7 +84,7 @@ TInt CipherSuite(TDes8& aCipherSuite); - void UpgradeToSecureL(TRequestStatus& aStatus, const TDesC8& aHostName); + void UpgradeToSecureL(TRequestStatus& aStatus, const TDesC8& aHostName,const TDesC& aProtocol); void CancelUpgradeToSecure(); diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httptransportplugins/httptransporthandler/csocketwriter.cpp --- a/applayerpluginsandutils/httptransportplugins/httptransporthandler/csocketwriter.cpp Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/csocketwriter.cpp Fri Mar 12 15:45:46 2010 +0200 @@ -353,7 +353,16 @@ { // Start the secure handshake iState = ESecureHandshakeComplete; - iSocket.UpgradeToSecureL(iStatus, iHostName); + _LIT(KTxtTls, "tls1.0"); + _LIT(KTxtSsl,"ssl3.0"); + if (!iObserver->SecureRetry()) + { + iSocket.UpgradeToSecureL(iStatus, iHostName,KTxtTls()); //first negotiate with latest version of TLS + } + else + { + iSocket.UpgradeToSecureL(iStatus, iHostName,KTxtSsl()); //now try old ssl version + } SetActive(); } break; case ESecureHandshakeComplete: diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/httptransportplugins/httptransporthandler/moutputstreamobserver.h --- a/applayerpluginsandutils/httptransportplugins/httptransporthandler/moutputstreamobserver.h Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/httptransportplugins/httptransporthandler/moutputstreamobserver.h Fri Mar 12 15:45:46 2010 +0200 @@ -114,7 +114,8 @@ virtual void OnSendTimeOut() =0; virtual TInt SendTimeOutVal() =0; - + + virtual TBool SecureRetry()=0; private: // methods /** diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/uripermissionservices/StringDictionary/URIList.st --- a/applayerpluginsandutils/uripermissionservices/StringDictionary/URIList.st Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/uripermissionservices/StringDictionary/URIList.st Fri Mar 12 15:45:46 2010 +0200 @@ -1,8 +1,8 @@ # -# Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" +# under the terms of "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/uripermissionservices/StringDictionary/tldlist.st --- a/applayerpluginsandutils/uripermissionservices/StringDictionary/tldlist.st Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/uripermissionservices/StringDictionary/tldlist.st Fri Mar 12 15:45:46 2010 +0200 @@ -1,8 +1,8 @@ # -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" +# under the terms of "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/uripermissionservices/StringDictionary/tldschema.st --- a/applayerpluginsandutils/uripermissionservices/StringDictionary/tldschema.st Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/uripermissionservices/StringDictionary/tldschema.st Fri Mar 12 15:45:46 2010 +0200 @@ -1,8 +1,8 @@ # -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" +# under the terms of "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/uripermissionservices/StringDictionary/urischema.st --- a/applayerpluginsandutils/uripermissionservices/StringDictionary/urischema.st Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/uripermissionservices/StringDictionary/urischema.st Fri Mar 12 15:45:46 2010 +0200 @@ -1,8 +1,8 @@ # -# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" +# under the terms of "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # diff -r 5ee1d9ce5878 -r 337070b4fa18 applayerpluginsandutils/uripermissionservices/Test/integration/testwhitelistblacklisturisuite/testdata/duplicate_entries/ineturilist.xml --- a/applayerpluginsandutils/uripermissionservices/Test/integration/testwhitelistblacklisturisuite/testdata/duplicate_entries/ineturilist.xml Fri Feb 19 23:50:57 2010 +0200 +++ b/applayerpluginsandutils/uripermissionservices/Test/integration/testwhitelistblacklisturisuite/testdata/duplicate_entries/ineturilist.xml Fri Mar 12 15:45:46 2010 +0200 @@ -1,9 +1,9 @@