multimediacommsengine/mmcesrv/mmceserver/src/mcenatstatewait.cpp
branchRCL_3
changeset 14 5bf83dc720b3
parent 0 1bce908db942
--- 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() ) );