mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp
branchRCL_3
changeset 23 e42293e811d8
parent 18 e257e2b6459d
--- 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 );