syncmlfw/common/http/src/nsmlhttpclient.cpp
branchRCL_3
changeset 25 b183ec05bd8c
parent 18 2de6635c154b
child 26 19bba8228ff0
equal deleted inserted replaced
24:13d7c31c74e0 25:b183ec05bd8c
    17 
    17 
    18 
    18 
    19 #include "nsmlhttpclient.h"
    19 #include "nsmlhttpclient.h"
    20 #include "nsmlerror.h"
    20 #include "nsmlerror.h"
    21 #include <featmgr.h>
    21 #include <featmgr.h>
    22 #include "NsmlOperatorErrorCRKeys.h"
    22 #include <nsmloperatorerrorcrkeys.h>
       
    23 #include <nsmloperatordatacrkeys.h> // KCRUidOperatorDatasyncInternalKeys
    23 #include <centralrepository.h> 
    24 #include <centralrepository.h> 
    24 
    25 
       
    26 //CONSTANTS
       
    27 const TInt KErrorCodeRangeFirst = 400;
       
    28 const TInt KErrorCodeRangeLast = 516;
    25 
    29 
    26 //Fix to Remove the Bad Compiler Warnings
    30 //Fix to Remove the Bad Compiler Warnings
    27 #ifndef __WINS__
    31 #ifndef __WINS__
    28 // This lowers the unnecessary compiler warning (armv5) to remark.
    32 // This lowers the unnecessary compiler warning (armv5) to remark.
    29 // "Warning:  #174-D: expression has no effect..." is caused by 
    33 // "Warning:  #174-D: expression has no effect..." is caused by 
    49 //------------------------------------------------------------
    53 //------------------------------------------------------------
    50 void CHttpEventHandler::ConstructL( CNSmlHTTP* aAgent )
    54 void CHttpEventHandler::ConstructL( CNSmlHTTP* aAgent )
    51 	{
    55 	{
    52 	FeatureManager::InitializeLibL();
    56 	FeatureManager::InitializeLibL();
    53 	iAgent = aAgent;
    57 	iAgent = aAgent;
       
    58  
       
    59     CRepository* rep = NULL;
       
    60     rep = CRepository::NewL( KCRUidOperatorDatasyncInternalKeys );
       
    61     CleanupStack::PushL( rep );
       
    62     rep->Get( KNsmlOpDsHttpErrorReporting, iErrorReportingEnabled );
       
    63     CleanupStack::PopAndDestroy( rep );
       
    64  
       
    65     iRepositorySSC = CRepository::NewL( KCRUidOperatorDatasyncErrorKeys );
    54 	}
    66 	}
    55 //------------------------------------------------------------
    67 //------------------------------------------------------------
    56 // CHttpEventHandler::~CHttpEventHandler()
    68 // CHttpEventHandler::~CHttpEventHandler()
    57 // destructor
    69 // destructor
    58 //------------------------------------------------------------
    70 //------------------------------------------------------------
    59 CHttpEventHandler::~CHttpEventHandler()
    71 CHttpEventHandler::~CHttpEventHandler()
    60 	{
    72 	{
    61 		FeatureManager::UnInitializeLib();
    73     FeatureManager::UnInitializeLib();		
       
    74     delete iRepositorySSC;
    62 	}
    75 	}
    63 //------------------------------------------------------------
    76 //------------------------------------------------------------
    64 // CHttpEventHandler::NewLC()
    77 // CHttpEventHandler::NewLC()
    65 //
    78 //
    66 //------------------------------------------------------------
    79 //------------------------------------------------------------
   124 			DBG_ARGS8(_S8("CHttpEventHandler::MHFRunL() contentTypeStr: %S"), &contentTypeStr );
   137 			DBG_ARGS8(_S8("CHttpEventHandler::MHFRunL() contentTypeStr: %S"), &contentTypeStr );
   125 			
   138 			
   126 			if ( contentTypeStr != KSmlContentTypeDS 
   139 			if ( contentTypeStr != KSmlContentTypeDS 
   127 				&& contentTypeStr != KSmlContentTypeDM )
   140 				&& contentTypeStr != KSmlContentTypeDM )
   128 				{
   141 				{
       
   142                 if( this->iAgent->iSession == ESyncMLDSSession )
       
   143                     {
       
   144                     if( iErrorReportingEnabled && ( ( status >= KErrorCodeRangeFirst ) 
       
   145                             && ( status <= KErrorCodeRangeLast ) ) )
       
   146                         {
       
   147                         iRepositorySSC->Set( KNsmlOpDsSyncErrorCode, status );
       
   148                         }
       
   149                     }  
       
   150 
   129 				//Error fix for BPSS-7H7H5S				
   151 				//Error fix for BPSS-7H7H5S				
   130 				DBG_FILE( _S8("CHttpEventHandler::MHFRunL() There is a mismatch in the Content Type") );
   152 				DBG_FILE( _S8("CHttpEventHandler::MHFRunL() There is a mismatch in the Content Type") );
   131 				
   153 				
   132 				status = CNSmlHTTP::SetErrorStatus( status );
   154 				status = CNSmlHTTP::SetErrorStatus( status );
   133 				
   155 				
   134 				if (status == resp.StatusCode() )
   156 				if (status == resp.StatusCode() )
   135 				    {
   157 				{
   136                     if( this->iAgent->iSession == ESyncMLDSSession )
   158 					DBG_FILE( _S8("Error in Communication string is set"));
   137                         {
   159 					status = TNSmlError::ESmlCommunicationInterrupted;
   138                         CRepository* rep = NULL;
   160 				}
   139                         TRAPD ( err, rep = CRepository::NewL( KCRUidOperatorDatasyncErrorKeys ) );
       
   140                         if ( err == KErrNone )
       
   141                             {
       
   142                             rep->Set( KNsmlOpDsErrorCode, status );
       
   143                             delete rep;
       
   144                             }
       
   145                         }  
       
   146 
       
   147                     DBG_FILE( _S8("Error in Communication string is set"));
       
   148                     status = TNSmlError::ESmlCommunicationInterrupted;
       
   149 				    }
       
   150 					
   161 					
   151 				// content mismatch
   162 				// content mismatch
   152 				aTransaction.Close();
   163 				aTransaction.Close();
   153 				User::RequestComplete( iStatusForAgent, status);
   164 				User::RequestComplete( iStatusForAgent, status);
   154 				
   165 				
   155 				break;
   166 				break;
   156 				}
   167 				}
   157 
   168 
   158 			if(this->iAgent->iSession == ESyncMLDSSession && this->iAgent->iDeflateFlag )
   169 			if(this->iAgent->iSession == ESyncMLDSSession)
   159 			    {
   170 			    {
   160 			    RStringF serverContentEncoding = strPool.OpenFStringL( KSmlContentEncodingType );
   171     	         RStringF serverContentEncoding = strPool.OpenFStringL( KSmlContentEncodingType );
   161                 THTTPHdrVal serverContentEncodingValue;
   172     	         THTTPHdrVal serverContentEncodingValue;
   162                 if(hdr.GetField( serverContentEncoding, 0, serverContentEncodingValue ) != KErrNotFound)	         
   173     	         if(hdr.GetField( serverContentEncoding, 0, serverContentEncodingValue ) != KErrNotFound)	         
   163                     {
   174     	             {
   164                     RStringF fieldServerContentEncodingValStr = strPool.StringF( serverContentEncodingValue.StrF() ); 
   175         	         RStringF fieldServerContentEncodingValStr = strPool.StringF( serverContentEncodingValue.StrF() ); 
   165                     const TDesC8& serverContentEncodingStr = fieldServerContentEncodingValStr.DesC();
   176         	         const TDesC8& serverContentEncodingStr = fieldServerContentEncodingValStr.DesC();
   166                     if( serverContentEncodingStr == KSmlContentDeflate)
   177         	         if( serverContentEncodingStr == KSmlContentDeflate)
   167                         {
   178         	             {
   168                         this->iAgent->iServerContentEncoding = CNSmlHTTP::ExptDeflate;
   179         	             this->iAgent->iServerContentEncoding = CNSmlHTTP::ExptDeflate;
   169                         }
   180         	             }
   170                     }
   181     	             }
   171                 RStringF serverAcceptEncoding = strPool.OpenFStringL( KSmlAcceptEncodingType );
   182     
   172                 THTTPHdrVal serverAcceptEncodingValue;
   183     			 RStringF serverAcceptEncoding = strPool.OpenFStringL( KSmlAcceptEncodingType );
   173                 if(hdr.GetField( serverAcceptEncoding, 0, serverAcceptEncodingValue )  != KErrNotFound )	         
   184     	         THTTPHdrVal serverAcceptEncodingValue;
   174                     {
   185     	         if(hdr.GetField( serverAcceptEncoding, 0, serverAcceptEncodingValue )  != KErrNotFound )	         
   175                     RStringF fieldServerAcceptEncodingValStr = strPool.StringF( serverAcceptEncodingValue.StrF() ); 
   186     	             {
   176                     const TDesC8& serverAcceptEncodingStr = fieldServerAcceptEncodingValStr.DesC();
   187         	         RStringF fieldServerAcceptEncodingValStr = strPool.StringF( serverAcceptEncodingValue.StrF() ); 
   177                     if( serverAcceptEncodingStr.Find(KSmlContentDeflate) != KErrNotFound)
   188         	         const TDesC8& serverAcceptEncodingStr = fieldServerAcceptEncodingValStr.DesC();
   178                         {
   189         	         if( serverAcceptEncodingStr.Find(KSmlContentDeflate) != KErrNotFound)
   179                         this->iAgent->iServerAcceptEncoding = CNSmlHTTP::ExptDeflate;
   190         	             {
   180                         }
   191         	             this->iAgent->iServerAcceptEncoding = CNSmlHTTP::ExptDeflate;
   181                     }
   192         	             }
   182     		    }
   193     	             }
       
   194 			    }
   183 			
   195 			
   184 			if ( status == 200 )
   196 			if ( status == 200 )
   185 				{
   197 				{
   186 				this->iAgent->iDocumentLength = 0;
   198 				this->iAgent->iDocumentLength = 0;
   187 				}
   199 				}