syncmlfw/common/http/src/nsmlhttpclient.cpp
branchRCL_3
changeset 25 b183ec05bd8c
parent 18 2de6635c154b
child 26 19bba8228ff0
--- a/syncmlfw/common/http/src/nsmlhttpclient.cpp	Thu Aug 19 10:44:50 2010 +0300
+++ b/syncmlfw/common/http/src/nsmlhttpclient.cpp	Tue Aug 31 16:04:06 2010 +0300
@@ -19,9 +19,13 @@
 #include "nsmlhttpclient.h"
 #include "nsmlerror.h"
 #include <featmgr.h>
-#include "NsmlOperatorErrorCRKeys.h"
+#include <nsmloperatorerrorcrkeys.h>
+#include <nsmloperatordatacrkeys.h> // KCRUidOperatorDatasyncInternalKeys
 #include <centralrepository.h> 
 
+//CONSTANTS
+const TInt KErrorCodeRangeFirst = 400;
+const TInt KErrorCodeRangeLast = 516;
 
 //Fix to Remove the Bad Compiler Warnings
 #ifndef __WINS__
@@ -51,6 +55,14 @@
 	{
 	FeatureManager::InitializeLibL();
 	iAgent = aAgent;
+ 
+    CRepository* rep = NULL;
+    rep = CRepository::NewL( KCRUidOperatorDatasyncInternalKeys );
+    CleanupStack::PushL( rep );
+    rep->Get( KNsmlOpDsHttpErrorReporting, iErrorReportingEnabled );
+    CleanupStack::PopAndDestroy( rep );
+ 
+    iRepositorySSC = CRepository::NewL( KCRUidOperatorDatasyncErrorKeys );
 	}
 //------------------------------------------------------------
 // CHttpEventHandler::~CHttpEventHandler()
@@ -58,7 +70,8 @@
 //------------------------------------------------------------
 CHttpEventHandler::~CHttpEventHandler()
 	{
-		FeatureManager::UnInitializeLib();
+    FeatureManager::UnInitializeLib();		
+    delete iRepositorySSC;
 	}
 //------------------------------------------------------------
 // CHttpEventHandler::NewLC()
@@ -126,27 +139,25 @@
 			if ( contentTypeStr != KSmlContentTypeDS 
 				&& contentTypeStr != KSmlContentTypeDM )
 				{
+                if( this->iAgent->iSession == ESyncMLDSSession )
+                    {
+                    if( iErrorReportingEnabled && ( ( status >= KErrorCodeRangeFirst ) 
+                            && ( status <= KErrorCodeRangeLast ) ) )
+                        {
+                        iRepositorySSC->Set( KNsmlOpDsSyncErrorCode, status );
+                        }
+                    }  
+
 				//Error fix for BPSS-7H7H5S				
 				DBG_FILE( _S8("CHttpEventHandler::MHFRunL() There is a mismatch in the Content Type") );
 				
 				status = CNSmlHTTP::SetErrorStatus( status );
 				
 				if (status == resp.StatusCode() )
-				    {
-                    if( this->iAgent->iSession == ESyncMLDSSession )
-                        {
-                        CRepository* rep = NULL;
-                        TRAPD ( err, rep = CRepository::NewL( KCRUidOperatorDatasyncErrorKeys ) );
-                        if ( err == KErrNone )
-                            {
-                            rep->Set( KNsmlOpDsErrorCode, status );
-                            delete rep;
-                            }
-                        }  
-
-                    DBG_FILE( _S8("Error in Communication string is set"));
-                    status = TNSmlError::ESmlCommunicationInterrupted;
-				    }
+				{
+					DBG_FILE( _S8("Error in Communication string is set"));
+					status = TNSmlError::ESmlCommunicationInterrupted;
+				}
 					
 				// content mismatch
 				aTransaction.Close();
@@ -155,31 +166,32 @@
 				break;
 				}
 
-			if(this->iAgent->iSession == ESyncMLDSSession && this->iAgent->iDeflateFlag )
+			if(this->iAgent->iSession == ESyncMLDSSession)
 			    {
-			    RStringF serverContentEncoding = strPool.OpenFStringL( KSmlContentEncodingType );
-                THTTPHdrVal serverContentEncodingValue;
-                if(hdr.GetField( serverContentEncoding, 0, serverContentEncodingValue ) != KErrNotFound)	         
-                    {
-                    RStringF fieldServerContentEncodingValStr = strPool.StringF( serverContentEncodingValue.StrF() ); 
-                    const TDesC8& serverContentEncodingStr = fieldServerContentEncodingValStr.DesC();
-                    if( serverContentEncodingStr == KSmlContentDeflate)
-                        {
-                        this->iAgent->iServerContentEncoding = CNSmlHTTP::ExptDeflate;
-                        }
-                    }
-                RStringF serverAcceptEncoding = strPool.OpenFStringL( KSmlAcceptEncodingType );
-                THTTPHdrVal serverAcceptEncodingValue;
-                if(hdr.GetField( serverAcceptEncoding, 0, serverAcceptEncodingValue )  != KErrNotFound )	         
-                    {
-                    RStringF fieldServerAcceptEncodingValStr = strPool.StringF( serverAcceptEncodingValue.StrF() ); 
-                    const TDesC8& serverAcceptEncodingStr = fieldServerAcceptEncodingValStr.DesC();
-                    if( serverAcceptEncodingStr.Find(KSmlContentDeflate) != KErrNotFound)
-                        {
-                        this->iAgent->iServerAcceptEncoding = CNSmlHTTP::ExptDeflate;
-                        }
-                    }
-    		    }
+    	         RStringF serverContentEncoding = strPool.OpenFStringL( KSmlContentEncodingType );
+    	         THTTPHdrVal serverContentEncodingValue;
+    	         if(hdr.GetField( serverContentEncoding, 0, serverContentEncodingValue ) != KErrNotFound)	         
+    	             {
+        	         RStringF fieldServerContentEncodingValStr = strPool.StringF( serverContentEncodingValue.StrF() ); 
+        	         const TDesC8& serverContentEncodingStr = fieldServerContentEncodingValStr.DesC();
+        	         if( serverContentEncodingStr == KSmlContentDeflate)
+        	             {
+        	             this->iAgent->iServerContentEncoding = CNSmlHTTP::ExptDeflate;
+        	             }
+    	             }
+    
+    			 RStringF serverAcceptEncoding = strPool.OpenFStringL( KSmlAcceptEncodingType );
+    	         THTTPHdrVal serverAcceptEncodingValue;
+    	         if(hdr.GetField( serverAcceptEncoding, 0, serverAcceptEncodingValue )  != KErrNotFound )	         
+    	             {
+        	         RStringF fieldServerAcceptEncodingValStr = strPool.StringF( serverAcceptEncodingValue.StrF() ); 
+        	         const TDesC8& serverAcceptEncodingStr = fieldServerAcceptEncodingValStr.DesC();
+        	         if( serverAcceptEncodingStr.Find(KSmlContentDeflate) != KErrNotFound)
+        	             {
+        	             this->iAgent->iServerAcceptEncoding = CNSmlHTTP::ExptDeflate;
+        	             }
+    	             }
+			    }
 			
 			if ( status == 200 )
 				{