ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp
changeset 4 e7aa27f58ae1
parent 0 8466d47a6819
child 8 e1b6206813b4
--- a/ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp	Tue Jan 26 11:45:42 2010 +0200
+++ b/ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp	Tue Feb 02 00:02:40 2010 +0200
@@ -94,7 +94,32 @@
     iSelection = new (ELeave) CMsvEntrySelection();
     CActiveScheduler::Add( this );
     }
-    
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSmtpOperation::CompleteObserver( TInt aStatus /*= KErrNone*/ )
+    {
+    FUNC_LOG;
+
+    TRequestStatus* status = &iObserverRequestStatus;
+    if ( status && status->Int() == KRequestPending )
+        {
+        User::RequestComplete( status, aStatus );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSmtpOperation::CompleteThis()
+    {
+    FUNC_LOG;
+
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete( status, KErrNone );
+    }
+
 // ---------------------------------------------------------------------------
 // ---------------------------------------------------------------------------
 //
@@ -115,10 +140,9 @@
         TImSmtpProgress prog;
         TPckg<TImSmtpProgress> param(prog);
         param.Copy( iOperation->FinalProgress() ); 
-        
-        TRequestStatus* status = &iObserverRequestStatus;
-        User::RequestComplete( status, prog.Error() );
-        }    
+
+        CompleteObserver( prog.Error() );
+        }
     }
     
 // ---------------------------------------------------------------------------
@@ -132,8 +156,8 @@
         {
         iOperation->Cancel();
         }
-    TRequestStatus* status = &iObserverRequestStatus;
-    User::RequestComplete(status, KErrCancel);
+
+    CompleteObserver( KErrCancel );
     }
 
 // ---------------------------------------------------------------------------
@@ -271,6 +295,12 @@
         {
         CallSendL();
         }
+    else
+        {
+        // nothing to do, finish operation
+        CompleteObserver( KErrNone );
+        }
+
     return retValue;
     }