--- a/multimediacommsengine/mmcesrv/mmceserver/src/mcenatstatewait.cpp Wed Apr 14 16:21:36 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/src/mcenatstatewait.cpp Tue Apr 27 17:02:55 2010 +0300
@@ -52,6 +52,7 @@
EMceProvisionalResponse == aEvent.Code() ) &&
MceSip::HasContent( aEvent.Session().Response() ) ) ||
EMceNatError == aEvent.NatCode() ||
+ EMceNatUpdated == aEvent.NatCode() ||
( EMceAck == aEvent.Code() &&
MceSip::HasContent( aEvent.Session().Request())) ||
EMceNatICMPError == aEvent.NatCode())
@@ -135,6 +136,7 @@
void CMceNatStateWait::ExitDefaultL( TMceNatStateTransitionEvent& aEvent )
{
CMceSipSession& session = aEvent.Session();
+ TMceStateIndex sipState = aEvent.Session().CurrentState().Id();
if ( EMceAck == aEvent.Code() &&
MceSip::HasContent( aEvent.Session().Request()))
@@ -143,6 +145,11 @@
aEvent.NatActions().UpdateL();
aEvent.NatActions().StateChangedL( aEvent, KMceNatStateDecodeAnswer );
}
+ else if( EMceNatUpdated == aEvent.NatCode() &&
+ KMceStateOffering == sipState ) //for prack
+ {
+ aEvent.NatActions().StateChangedL( aEvent, KMceNatStateCreateOffer );
+ }
else
{
User::LeaveIfError( session.Actions().CreateSDP( session.Response() ) );