applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp
changeset 12 88a7990e456a
parent 11 001ef9ddb825
child 49 b91bcc4b38e4
--- a/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp	Fri Mar 19 09:39:24 2010 +0200
+++ b/applayerpluginsandutils/httpprotocolplugins/httpclient/chttpconnectionmanager.cpp	Fri Apr 16 15:30:47 2010 +0300
@@ -18,6 +18,7 @@
 #include <authority8.h>
 #include <httperr.h>
 #include <x509cert.h>
+#include <sslerr.h>
 
 #include "msocketfactory.h"
 #include "msocketconnector.h"
@@ -585,9 +586,16 @@
 					);
 			}
 #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() )
+			if ( IsPendingWriteInConnectedState() && iCurrentRequest && !iCurrentRequest->NeedDisconnectNotification() )
  				{
 				// Server shut down the connect before the current transaction had 
  				// a chance to send any of its data - attempt re-connect to server.	
@@ -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"));