// ----------------------------------------------------------------------------- // MceSip::DoDiscardRequestL // ----------------------------------------------------------------------------- // void MceSip::DoDiscardRequestL( CSIPServerTransaction& aRequest, TInt aError, TBool aRetryIndication ) { CSIPResponseElements* response = NULL; TUint responseCode = 0; if ( aError >= (TInt)KMceSipTrying ) { responseCode = (TUint)aError; RStringF reasonPhrase = ReasonPhraseL( responseCode ); CleanupClosePushL( reasonPhrase ); response = CSIPResponseElements::NewL( responseCode, reasonPhrase ); CleanupStack::PopAndDestroy();//reasonPhrase } else { TInt reasonPhrase = 0; ErrorResponse( aError, responseCode, reasonPhrase ); response = CSIPResponseElements::NewL( responseCode, SIPStrings::StringF( reasonPhrase ) ); } CleanupStack::PushL( response ); if ( aRetryIndication ) { CSIPMessageElements& elements = response->MessageElements(); //create Retry-After header RPointerArray<CSIPHeaderBase> headers; CSIPHeaderBase::PushLC( &headers ); CSIPRetryAfterHeader* retryAfter = CSIPRetryAfterHeader::NewLC( Random( KMceRandMinRetryValue, KMceRandMaxRetryValue ) ); headers.AppendL( retryAfter ); CleanupStack::Pop( retryAfter ); //send invitation elements.SetUserHeadersL( headers ); CleanupStack::Pop( &headers ); } aRequest.SendResponseL( response ); CleanupStack::Pop( response ); }
// ----------------------------------------------------------------------------- // CSIPExSIPServerOfferingState::ByeReceivedL() // (other items were commented in a header). // ----------------------------------------------------------------------------- void CSIPExSIPServerOfferingState::ByeReceivedL( CSIPExSIPEngine& aEngine, CSIPServerTransaction& aTransaction ) { // Create and send response CSIPResponseElements* elem = CSIPResponseElements::NewLC( 200, SIPStrings::StringF( SipStrConsts::EPhraseOk ) ); aTransaction.SendResponseL( elem ); CleanupStack::Pop( elem ); // Inform observer aEngine.Observer()->SessionEnded(); // Set state aEngine.SetCurrentState( iTerminatedState ); }