multimediacommsengine/mmcesrv/mmceserver/src/mcenatstatewait.cpp
branchRCL_3
changeset 14 5bf83dc720b3
parent 0 1bce908db942
equal deleted inserted replaced
11:2a28ef775f15 14:5bf83dc720b3
    50 	if ( ( EMceNatHandleSIP == aEvent.NatCode() && 
    50 	if ( ( EMceNatHandleSIP == aEvent.NatCode() && 
    51 	       ( EMceResponse == aEvent.Code() ||
    51 	       ( EMceResponse == aEvent.Code() ||
    52 	         EMceProvisionalResponse == aEvent.Code() ) &&
    52 	         EMceProvisionalResponse == aEvent.Code() ) &&
    53 	     	 MceSip::HasContent( aEvent.Session().Response() ) ) ||
    53 	     	 MceSip::HasContent( aEvent.Session().Response() ) ) ||
    54 	     	 EMceNatError == aEvent.NatCode() ||
    54 	     	 EMceNatError == aEvent.NatCode() ||
       
    55 	     	 EMceNatUpdated == aEvent.NatCode() ||
    55 	         ( EMceAck == aEvent.Code() &&  
    56 	         ( EMceAck == aEvent.Code() &&  
    56             	    	MceSip::HasContent( aEvent.Session().Request())) ||
    57             	    	MceSip::HasContent( aEvent.Session().Request())) ||
    57 	     	 EMceNatICMPError == aEvent.NatCode())
    58 	     	 EMceNatICMPError == aEvent.NatCode())
    58 	    {
    59 	    {
    59         return ETrue;
    60         return ETrue;
   133 // -----------------------------------------------------------------------------
   134 // -----------------------------------------------------------------------------
   134 //
   135 //
   135 void CMceNatStateWait::ExitDefaultL( TMceNatStateTransitionEvent& aEvent )
   136 void CMceNatStateWait::ExitDefaultL( TMceNatStateTransitionEvent& aEvent )
   136     {
   137     {
   137     CMceSipSession& session = aEvent.Session();
   138     CMceSipSession& session = aEvent.Session();
       
   139     TMceStateIndex sipState = aEvent.Session().CurrentState().Id();
   138     
   140     
   139     if ( EMceAck == aEvent.Code() &&  
   141     if ( EMceAck == aEvent.Code() &&  
   140           MceSip::HasContent( aEvent.Session().Request()))
   142           MceSip::HasContent( aEvent.Session().Request()))
   141     	{
   143     	{
   142     	User::LeaveIfError( session.Actions().CreateSDP( session.Request() ) );
   144     	User::LeaveIfError( session.Actions().CreateSDP( session.Request() ) );
   143         aEvent.NatActions().UpdateL();
   145         aEvent.NatActions().UpdateL();
   144     	aEvent.NatActions().StateChangedL( aEvent, KMceNatStateDecodeAnswer );		
   146     	aEvent.NatActions().StateChangedL( aEvent, KMceNatStateDecodeAnswer );		
       
   147     	}
       
   148     else if( EMceNatUpdated == aEvent.NatCode() && 
       
   149     		 KMceStateOffering == sipState )                //for prack
       
   150     	{
       
   151 		aEvent.NatActions().StateChangedL( aEvent, KMceNatStateCreateOffer );	
   145     	}
   152     	}
   146     else
   153     else
   147     	{
   154     	{
   148     	User::LeaveIfError( session.Actions().CreateSDP( session.Response() ) );
   155     	User::LeaveIfError( session.Actions().CreateSDP( session.Response() ) );
   149     	aEvent.NatActions().StateChangedL( aEvent, KMceNatStateDecodeAnswer );		
   156     	aEvent.NatActions().StateChangedL( aEvent, KMceNatStateDecodeAnswer );