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