[reSIProcate] SDP in ACK after intial offer/answer exchange causesBYE from resip/dum

Byron Campen bcampen at estacado.net
Wed Sep 26 13:49:08 CDT 2007


	Alright, I'm checking this in shortly.

Best regards,
Byron Campen

> Looks good to me!  : )
>
>
>
> From: Byron Campen [mailto:bcampen at estacado.net]
> Sent: Monday, September 24, 2007 4:01 PM
> To: Scott Godin
> Cc: 'Yuan, Frank'; resiprocate-devel at list.resiprocate.org
> Subject: Re: [reSIProcate] SDP in ACK after intial offer/answer  
> exchange causesBYE from resip/dum
>
>
>
>           Here's a diff from my working copy. If you're familiar  
> with the code, give it a look.
>
>
>
> *snip*
>
> Index: InviteSession.cxx
>
> ===================================================================
>
> --- InviteSession.cxx   (revision 7255)
>
> +++ InviteSession.cxx   (working copy)
>
> @@ -1251,6 +1251,7 @@
>
>           break;
>
>        case OnAck:
>
> +      case OnAckAnswer: // .bwc. Don't drop ACK with SDP!
>
>           mCurrentRetransmit200 = 0; // stop the 200 retransmit timer
>
>           handler->onAckReceived(getSessionHandle(), msg);
>
>           break;
>
> Index: ServerInviteSession.cxx
>
> ===================================================================
>
> --- ServerInviteSession.cxx     (revision 7255)
>
> +++ ServerInviteSession.cxx     (working copy)
>
> @@ -778,6 +778,7 @@
>
>     switch (toEvent(msg, sdp.get()))
>
>     {
>
>        case OnAck:
>
> +      case OnAckAnswer:
>
>        {
>
>           mCurrentRetransmit200 = 0; // stop the 200 retransmit timer
>
>           transition(Connected);
>
> @@ -785,14 +786,16 @@
>
>           break;
>
>        }
>
> -      case OnAckAnswer:
>
> -      {
>
> -         mCurrentRetransmit200 = 0; // stop the 200 retransmit timer
>
> -         sendBye();
>
> -         transition(Terminated);
>
> -         handler->onTerminated(getSessionHandle(),  
> InviteSessionHandler::GeneralFailure, &msg);
>
> -         break;
>
> -      }
>
> +//       .bwc. unsolicited SDP in ACK; it would probably make  
> sense to just
>
> +//       ignore.
>
> +//      case OnAckAnswer:
>
> +//      {
>
> +//         mCurrentRetransmit200 = 0; // stop the 200 retransmit  
> timer
>
> +//         sendBye();
>
> +//         transition(Terminated);
>
> +//         handler->onTerminated(getSessionHandle(),  
> InviteSessionHandler::GeneralFailure, &msg);
>
> +//         break;
>
> +//      }
>
>
>
>        case OnCancel:
>
>        {
>
> *snip*
>
>
>
> Best regards,
>
> Byron Campen
>
>
>
>
> Makes sense to me.  If we can handle the call – why not try?  A  
> Warning log is probably appropriate as a mechanism to detect non- 
> compliant implementations.
>
>
>
> Scott
>
>
>
> From: resiprocate-devel-bounces at resiprocate.org [mailto:resiprocate- 
> devel-bounces at resiprocate.org] On Behalf Of Byron Campen
> Sent: September 21, 2007 5:27 PM
> To: Yuan, Frank
> Cc: resiprocate-devel at list.resiprocate.org
> Subject: Re: [reSIProcate] SDP in ACK after intial offer/answer  
> exchange causesBYE from resip/dum
>
>
>
>             Looking back at this, it seems that we might want to  
> change the code to just silently ignore the bad SDP instead of  
> tearing down the call. Any opinions?
>
>
>
> Best regards,
>
> Byron Campen
>
>
>
>
>
> Here is SIP FAQ from SIP Expert Jonathan:
>
>
>
>
>
> If I get a new SDP body in the ACK, and I don't like the media  
> type, how can I indicate its unacceptable to me?
>
>
>
> It doesn't work that way. You should not get a "new" SDP in the  
> ACK. SDP goes in ACK only if there was no SDP in INVITE, then SDP  
> was included in the 200 OK. This SDP should represent a subset of  
> the media "offered" in the 200 OK. In other words, a normal SIP  
> transaction has one SDP in the INVITE, and another in 200 OK. Now,  
> we have the same two phase process, but the first SDP is in the 200  
> OK, and the second in the ACK.
>
> Categories for this entry
>
>
>
> Last update: 2000-07-11 16:16
>
> Author: Jonathan Rosenberg
>
>
>
>
>
> Regards,
>
>
>
> FrankY
>
>
>
> -----Original Message-----
> From: resiprocate-devel-bounces at list.resiprocate.org  
> [mailto:resiprocate-devel-bounces at list.resiprocate.org] On Behalf  
> Of Justin Matthews
> Sent: Friday, April 20, 2007 7:11 PM
> To: resiprocate-devel at list.resiprocate.org
> Subject: [reSIProcate] SDP in ACK after intial offer/answer  
> exchange causesBYE from resip/dum
>
>
>
> A certain UA, with "bridges in the logo" (:-) I love that  
> comment),  is
>
> sending SDP in the ACK during the initial call setup, but after the
>
> offer/answer has been completed in the invite/200.  This causes DUM in
>
> ServerInviteSession::dispatchAccepted() to handle the event as  
> OnAckAnswer
>
> and send a BYE, terminating the session.
>
>
>
> Section 13.2.1 in 3261 states some restrictions here, but it  
> doesn't appear
>
> that this case is spelled out.  To me I can understand how this is
>
> considered bad behavior, with no way to answer this new offer in  
> the ACK.
>
> Question is, is sending a BYE too harsh here?  Could this decision  
> be left
>
> up to the APP?  For example, if the SDP is the same as the initial  
> INVITE,
>
> just ignore this behavior?
>
>
>
> UAC               UAS
>
>
>
> INVITE w/offer ->
>
> 200 OK w/answer <-
>
> ACK w/SDP ->
>
> BYE <-
>
> ACK ->
>
>
>
>
>
> Thanks,
>
>
>
> -Justin
>
>
>
> _______________________________________________
>
> resiprocate-devel mailing list
>
> resiprocate-devel at list.resiprocate.org
>
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
> _______________________________________________
>
> resiprocate-devel mailing list
>
> resiprocate-devel at list.resiprocate.org
>
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
>
>
> _______________________________________________
>
> resiprocate-devel mailing list
>
> resiprocate-devel at resiprocate.org
>
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
>
>
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at resiprocate.org
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20070926/02ae73e3/attachment.htm>


More information about the resiprocate-devel mailing list