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 } |