diff -r a4d6f1ea0416 -r e7aa27f58ae1 ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp --- 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 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; }