// ----------------------------------------------------------------------------- // CInviteClientTa_Calling::ReceiveL // If 2xx is received, UAC terminates the transaction. Stop timers when // transaction can't return to previous state (ReceiveResponseL has returned). // ----------------------------------------------------------------------------- // void CInviteClientTa_Calling::ReceiveL(CTransaction& aTransaction, CSIPResponse* aResponse) const { __SIP_ASSERT_LEAVE(aResponse, KErrArgument); CInviteClientTransaction& ta = CInviteClientTransaction::Ptr(aTransaction); if (ta.ShouldTaHandleResponse(aResponse)) { CTransactionTimer* proceedingTimer = NULL; CTransactionTimer* natTimer = NULL; if (!CSIPMessageUtility::IsFinalResponse(*aResponse)) { proceedingTimer = ta.StartTimerProceedingL(); natTimer = ta.StartTimerNATL(); aTransaction.ChangeState(*iProceeding); } ta.ReceiveResponseL(aResponse, *this, *iCompleted, proceedingTimer, natTimer); //Stop retransmission timer A. Timer B has only effect in Calling state ta.StopTimerA(); ta.StopTimerB(); } }