diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -198,12 +198,14 @@ { delete iObjectInfo; iObjectInfo = NULL; + Rollback(); iProgress = EObjectNone; } else if ( iOperationCode == EMTPOpCodeSendObjectPropList ) { delete iObjectPropList; iObjectPropList = NULL; + Rollback(); iProgress = EObjectNone; } } @@ -328,6 +330,10 @@ if ( iProgress == EObjectNone ) { + // iCancelled could have been set after the last transaction + // reset the flag here + iCancelled = EFalse; + if ( iOperationCode == EMTPOpCodeSendObjectInfo ) { ServiceInfoL(); @@ -607,6 +613,8 @@ SendResponseL( EMTPRespCodeOK ); } + iCancelled = EFalse; + PRINT1( _L( "MM MTP <= CSendObject::DoHandleResponsePhaseObjectL result = %d" ), result ); return result; @@ -1067,6 +1075,17 @@ // might happen if function is called before physical file arrives // do nothing } + else if ( iObjectFormat == EMTPFormatCodeASF ) + { + // happens on some buggy PC implementation, default formatcode to WMA or WMV if extension matches + PRINT( _L( "MM MTP <> happens on some buggy PC implementation, default formatcode to WMA or WMV if extension matches" ) ); + if ( parser.Ext().CompareF( KTxtExtensionWMA ) == 0 ) + iObjectFormat = EMTPFormatCodeWMA; + else if ( parser.Ext().CompareF( KTxtExtensionWMV ) == 0 ) + iObjectFormat = EMTPFormatCodeWMV; + else + result = EFalse; + } else { PRINT2( _L( "MM MTP <> %S does not match 0x%x" ), &iFullPath, iObjectFormat );