--- a/telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmsmstsy.cpp Mon Aug 09 17:43:08 2010 +0100
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmsmstsy.cpp Tue Sep 14 17:55:14 2010 +0100
@@ -307,11 +307,13 @@
if ( KErrNone != leaveCode )
{
OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMSMSTSY_EXTFUNC_2, "CMmSmsTsy: Leave trapped!, IPC=%d, error value:%d", aIpc, leaveCode );
+ //reset request handle to indicate the request is no longer ongoing
+ iTsyReqHandleStore->FindAndResetTsyReqHandle( aTsyReqHandle );
ReqCompleted( aTsyReqHandle, leaveCode );
}
//save request handle
- if ( EMultimodeSmsReqHandleUnknown != iReqHandleType )
+ else if ( EMultimodeSmsReqHandleUnknown != iReqHandleType )
{
#ifdef REQHANDLE_TIMER
SetTypeOfResponse( iReqHandleType, aTsyReqHandle );
@@ -320,10 +322,10 @@
iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType,
aTsyReqHandle );
#endif // REQHANDLE_TIMER
- // We've finished with this value now. Clear it so it doesn't leak
- // up to any other instances of this method down the call stack
- iReqHandleType = EMultimodeSmsReqHandleUnknown;
}
+ // We've finished with this value now. Clear it so it doesn't leak
+ // up to any other instances of this method down the call stack
+ iReqHandleType = EMultimodeSmsReqHandleUnknown;
break;
}
}
@@ -1799,69 +1801,63 @@
// structure for all sms parameters and data
TSendSmsDataAndAttributes sendData;
-
+ TSmsRequestTypes reqType;
+
sendData.iAttributes = &msgAttr;
sendData.iMsgData = aMsgData;
if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckUsed )
{
//set ipc
- sendData.iIpc = EMobileSmsMessagingSendMessageNoFdnCheck;
+ sendData.iIpc = EMobileSmsMessagingSendMessageNoFdnCheck;
+ reqType = EMultimodeSmsSendMessageNoFdnCheck;
}
- if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed )
+ else //(iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed)
{
//set ipc
- sendData.iIpc = EMobileSmsMessagingSendMessage;
+ sendData.iIpc = EMobileSmsMessagingSendMessage;
+ reqType = EMultimodeSmsSendMessage;
}
// Pack parameters
package.PackData( &sendData );
- CSmsSendRequest* smsSendReq = new (ELeave) CSmsSendRequest();
- smsSendReq->SetSmsDataAndAttributes( sendData );
+ iSmsSendReq = new (ELeave) CSmsSendRequest();
+ iSmsSendReq->SetSmsDataAndAttributes( sendData );
- // save send request
- iSmsSendReq = smsSendReq;
OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMSMSTSY_SENDMESSAGEL_1, "TSY: CMmSmsTsy::SendMessageL: Send request saved");
+#ifdef REQHANDLE_TIMER
+ SetTypeOfResponse( reqType, aTsyReqHandle );
+#else
+ iTsyReqHandleStore->SetTsyReqHandle( reqType, aTsyReqHandle );
+#endif // REQHANDLE_TIMER
+
+ TInt leaveCode( KErrNone );
// send request to DOS
// packed parameter: TSendSmsDataAndAttributes
- if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckUsed )
- {
- ret = iMmPhone->MessageManager()->HandleRequestL(
- EMobileSmsMessagingSendMessageNoFdnCheck, &package );
- }
- if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed )
- {
- ret = iMmPhone->MessageManager()->HandleRequestL(
- EMobileSmsMessagingSendMessage, &package );
- }
+ TRAP(leaveCode, ret = iMmPhone->MessageManager()->HandleRequestL(sendData.iIpc, &package ););
- if ( KErrNone == ret )
- {
- if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckUsed )
- {
- //set request type
- iReqHandleType = EMultimodeSmsSendMessageNoFdnCheck;
- }
- if ( iSmsNoFdnCheckFlag == ESmsNoFdnCheckNotUsed )
- {
- //set request type
- iReqHandleType = EMultimodeSmsSendMessage;
- }
- smsSendReq->IncreaseSendCounter();
- }
- else
+ if ( (leaveCode != KErrNone) || (ret != KErrNone) )
{
- // Phonet returned error
- delete smsSendReq; // Delete object
+ iTsyReqHandleStore->ResetTsyReqHandle( reqType );
+ delete iSmsSendReq; // Delete object
iSmsSendReq = NULL; // Reset pointer
- // Message construction failed or phonet sender returned error
- ReqCompleted( aTsyReqHandle, ret );
// reset pointer to client memory
iSendMessageMsgAttrPckgPtr = NULL;
-
iSmsNoFdnCheckFlag = ESmsNoFdnCheckUnknown;
+ if (leaveCode != KErrNone)
+ {
+ ReqCompleted( aTsyReqHandle, leaveCode );
+ }
+ else
+ {
+ ReqCompleted( aTsyReqHandle, ret );
+ }
+ }
+ else
+ {
+ iSmsSendReq->IncreaseSendCounter();
}
}
@@ -1938,10 +1934,14 @@
// reset req handle and complete request
TTsyReqHandle reqHandle = iTsyReqHandleStore->ResetTsyReqHandle(
EMultimodeSmsSendMessage );
- ReqCompleted( reqHandle, extendedError );
- // reset pointer to client memory
- iSendMessageMsgAttrPckgPtr = NULL;
- iSmsNoFdnCheckFlag = ESmsNoFdnCheckUnknown;
+
+ if ( EMultimodeSmsReqHandleUnknown < reqHandle )
+ {
+ ReqCompleted( reqHandle, extendedError );
+ // reset pointer to client memory
+ iSendMessageMsgAttrPckgPtr = NULL;
+ iSmsNoFdnCheckFlag = ESmsNoFdnCheckUnknown;
+ }
}
else if ( ( KErrNone != aError ) && ( KErrTimedOut != aError )
&& ( KErrGsmSMSOperationNotAllowed !=