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