52 iFramework( aFramework ), |
52 iFramework( aFramework ), |
53 iConnection( aConnection ), |
53 iConnection( aConnection ), |
54 iHandles( KMTPRequestCheckerHandleGranularity ), |
54 iHandles( KMTPRequestCheckerHandleGranularity ), |
55 iObjectArray( KMTPRequestCheckerHandleGranularity ) |
55 iObjectArray( KMTPRequestCheckerHandleGranularity ) |
56 { |
56 { |
57 |
57 // Do nothing |
58 } |
58 } |
59 |
59 |
60 // ----------------------------------------------------------------------------- |
60 // ----------------------------------------------------------------------------- |
61 // CRequestChecker::ConstructL |
61 // CRequestChecker::ConstructL |
62 // Two-phase construction method |
62 // Two-phase construction method |
63 // ----------------------------------------------------------------------------- |
63 // ----------------------------------------------------------------------------- |
64 // |
64 // |
65 void CRequestChecker::ConstructL() |
65 void CRequestChecker::ConstructL() |
66 { |
66 { |
67 |
67 // Do nothing |
68 } |
68 } |
69 |
69 |
70 // ----------------------------------------------------------------------------- |
70 // ----------------------------------------------------------------------------- |
71 // CRequestChecker::~CRequestChecker |
71 // CRequestChecker::~CRequestChecker |
72 // Destructor |
72 // Destructor |
82 // CRequestChecker::VerifyRequestL |
82 // CRequestChecker::VerifyRequestL |
83 // Verfiy the request |
83 // Verfiy the request |
84 // ----------------------------------------------------------------------------- |
84 // ----------------------------------------------------------------------------- |
85 // |
85 // |
86 TMTPResponseCode CRequestChecker::VerifyRequestL( const TMTPTypeRequest& aRequest, |
86 TMTPResponseCode CRequestChecker::VerifyRequestL( const TMTPTypeRequest& aRequest, |
87 TInt aCount, |
87 TInt aCount, |
88 const TMTPRequestElementInfo* aElementInfo ) |
88 const TMTPRequestElementInfo* aElementInfo ) |
89 { |
89 { |
90 TMTPResponseCode result = EMTPRespCodeOK; |
90 TMTPResponseCode result = EMTPRespCodeOK; |
91 iHandles.Close(); |
91 iHandles.Close(); |
92 iObjectArray.ResetAndDestroy(); |
92 iObjectArray.ResetAndDestroy(); |
93 |
93 |
94 result = CheckRequestHeader( aRequest ); |
94 result = CheckRequestHeader( aRequest ); |
95 |
95 |
96 for ( TInt i = 0; i < aCount && EMTPRespCodeOK == result; i++ ) |
96 for ( TInt i = 0; i < aCount && EMTPRespCodeOK == result; i++ ) |
97 { |
97 { |
98 TUint32 parameter = aRequest.Uint32( aElementInfo[i].iElementIndex ); |
98 TUint32 parameter = aRequest.Uint32( aElementInfo[i].iElementIndex ); |
99 PRINT3( _L( "MM MTP <> CRequestChecker parameter %d/%d = %d" ), |
99 PRINT3( _L( "MM MTP <> CRequestChecker parameter %d/%d = %d" ), |
100 i + 1, aCount, parameter ); |
100 i + 1, |
101 |
101 aCount, |
|
102 parameter ); |
|
103 |
102 if ( !IsSpecialValue( parameter, aElementInfo[i] ) ) |
104 if ( !IsSpecialValue( parameter, aElementInfo[i] ) ) |
103 { |
105 { |
104 switch ( aElementInfo[i].iElementType ) |
106 switch ( aElementInfo[i].iElementType ) |
105 { |
107 { |
106 case EMTPElementTypeSessionID: |
108 case EMTPElementTypeSessionID: |
250 if ( result ) |
252 if ( result ) |
251 { |
253 { |
252 const TDesC& suid( object->DesC( CMTPObjectMetaData::ESuid ) ); |
254 const TDesC& suid( object->DesC( CMTPObjectMetaData::ESuid ) ); |
253 TEntry entry; |
255 TEntry entry; |
254 TInt err = iFramework.Fs().Entry( suid, entry ); |
256 TInt err = iFramework.Fs().Entry( suid, entry ); |
255 |
257 |
256 if ( object->Uint( CMTPObjectMetaData::EFormatCode ) == EMTPFormatCodeAssociation ) |
258 if ( object->Uint( CMTPObjectMetaData::EFormatCode ) == EMTPFormatCodeAssociation ) |
257 // && ( object->Uint( CMTPObjectMetaData::EFormatSubCode ) == EMTPAssociationTypeGenericFolder ) ) |
259 // && ( object->Uint( CMTPObjectMetaData::EFormatSubCode ) == EMTPAssociationTypeGenericFolder ) ) |
258 { |
260 { |
259 // Special association type .. not always present on the filesystem. |
261 // Special association type .. not always present on the filesystem. |
260 return ret; |
262 return ret; |
261 } |
263 } |
262 else |
264 else |
263 { |
265 { |
264 User::LeaveIfError( err ); |
266 User::LeaveIfError( err ); |
265 |
267 |
266 if ( iFramework.ObjectMgr().ObjectOwnerId( aHandle ) != iFramework.DataProviderId() ) |
268 if ( iFramework.ObjectMgr().ObjectOwnerId( aHandle ) != iFramework.DataProviderId() ) |
267 { |
269 { |
268 PRINT( _L(" ewrwe ret = EMTPRespCodeInvalidObjectHandle;")); |
270 PRINT( _L(" ewrwe ret = EMTPRespCodeInvalidObjectHandle;")); |
269 ret = EMTPRespCodeInvalidObjectHandle; |
271 ret = EMTPRespCodeInvalidObjectHandle; |
270 } |
272 } |
304 { |
306 { |
305 PRINT( _L( "MM MTP <> CRequestChecker::VerifyObjectHandleL, Object does not exist." ) ); |
307 PRINT( _L( "MM MTP <> CRequestChecker::VerifyObjectHandleL, Object does not exist." ) ); |
306 ret = EMTPRespCodeInvalidObjectHandle; |
308 ret = EMTPRespCodeInvalidObjectHandle; |
307 } |
309 } |
308 PRINT1( _L( "MM MTP <= CRequestChecker::VerifyObjectHandleL ret = 0x%x" ), ret ); |
310 PRINT1( _L( "MM MTP <= CRequestChecker::VerifyObjectHandleL ret = 0x%x" ), ret ); |
309 |
311 |
310 return ret; |
312 return ret; |
311 } |
313 } |
312 |
314 |
313 // ----------------------------------------------------------------------------- |
315 // ----------------------------------------------------------------------------- |
314 // CRequestChecker::VerifyStorageIdL |
316 // CRequestChecker::VerifyStorageIdL |