--- 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 );