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