Assuming that your call-flow is like

UA-A                                          B2BUA
UA-B

INVITE ---------------------------->
INVITE----------------------------->

                                                              180
without contact <--------------
180 with contact<---------------

BYE ----------------------------->
BYE--------------------------------->


The BYE on the A-side of the call-leg should be sent based on the
contact header present in 18x. 

BYE to be sent from B2BUA is little open question as suggested in the
previous responses, that it would be invalid for UA-B to send a 180
ringing response without contact based on reference from section 12.1
and 12.1.1 ( if 180 had a to-tag, then the UA must include a contact
header ). 

If it was a CANCEL method, then the CANCEL would have followed the same
path as initial INVITE ( contact header would have been irrelevant ) and
normally in this initial setup phase of the call ( ringing ) a CANCEL is
commonly used instead of BYE, but definitely BYE is allowed to be sent
on early dialogs. So question is how do we send a BYE to UA-B on an
early dialog where the UA-B never provided the contact header
information in 180 response ( to be saved in the dialog remote target )
and release the call. If sending a BYE is mandatory, then I think we can
send it to same address where we sent the initial INVITE. But since
there is a B2BUA involved here and in B2BUA each side is independent, so
even if UA-A sends a BYE to B2BUA, the B2BUA can send a CANCEL method
towards UA-B to release the call which is in early dialog stage.

Please note that for simple case sending BYE on the same path as INVITE
may seems fine. But if proxies were involved between B2BUA and UA-B and
the call was forked, then if one sends the BYE based on the initial
INVITE data ( no contact in 18x ), then I am not sure how the proxies
would have forwarded BYE ...

But if we would have sent CANCEL towards UA-B there would not have any
issue, as it is hop to hop and CANCEL is sent based on initial INVITE.
So I would recommend below call-flow if feasible.

UA-A                                          B2BUA
UA-B

INVITE ---------------------------->
INVITE--------------------------------->

                                                              180
without contact <-----------------
180 with contact<---------------

BYE ----------------------------->                CANCEL
--------------------------------->

Regards,

Indresh K Singh

>>-----Original Message-----
>>From: [email protected] 
>>[mailto:[email protected]] On 
>>Behalf Of ext raikkme rrrrr
>>Sent: Tuesday, August 18, 2009 12:03 PM
>>To: [email protected]
>>Subject: Re: [Sip-implementors] 18X response with no Contact Header
>>
>>Hi Indresh,
>>Just one small clarification. As the entity behaves as B2B, 
>>18x is sent
>>towards A side with contact header(B2B's address), after receiving 18x
>>without contact header from B side.
>>
>>Query is that, how the release from A side(as indicated in 
>>the picture) to
>>be treated? Or 18x from A side, at first place, should be discarded?
>>
>>Thanks,
>>kumar
>>
>>On Tue, Aug 18, 2009 at 8:04 PM, Singh, Indresh (NSN - 
>>US/Boca Raton) <
>>[email protected]> wrote:
>>
>>> Still the figure is not very clear.
>>>
>>> But as Vikram pointed out that contact header is an 
>>optional header in
>>> 1xx responses. If no contact header is present in 1xx 
>>response then if a
>>> method has to be sent out immediately after this 1xx 
>>response ( prior to
>>> receiving another response with contact header ) then the 
>>message will
>>> be routed back to the same location where the initial 
>>INVITE was sent
>>> out ( assuming no record-route is involved, since you mentioned RR
>>> below. For RR case we need more info as in that case the 
>>routing will
>>> happen based on route set built based on RR present in 1xx 
>>responses and
>>> also the type of RR  LooseRoute or no LooseRoute ).
>>>
>>> Based on your figure below it seems that you rcvd a 18x 
>>without contact
>>> and then you rcvd a 18x with contact and then a BYE is being sent by
>>> originator. In that case BYE should be sent based on the 
>>latest contact
>>> header information received in 18x header ( if any assuming
>>> Record-Routing is not involved ).
>>>
>>> I also do not think that it is mandatory for the case of  
>>even reliable
>>> 18x response as well. I do not think if a 18x response is received
>>> without contact header a PRACK request can not be 
>>constructed. Vikram
>>> could you kindly explain why would this be the case as 
>>mentioned below
>>> ??
>>>
>>> >>> a unreliable 18x response without Contact as it is optional.
>>> >>> It is definitely needed in a reliable 18x as without it, a
>>> >>UAC can not
>>> >>> construct a PRACK request. In this case, 18x will 
>>timeout and the
>>> >>> early dialog will be terminated.
>>>
>>> Best Regards,
>>>
>>> Indresh K Singh
>>>
>>> >>-----Original Message-----
>>> >>From: [email protected]
>>> >>[mailto:[email protected]] On
>>> >>Behalf Of ext raikkme rrrrr
>>> >>Sent: Tuesday, August 18, 2009 12:27 AM
>>> >>To: [email protected]
>>> >>Subject: Re: [Sip-implementors] 18X response with no 
>>Contact Header
>>> >>
>>> >>I tried to translate the picture in notepad. I hope, it 
>>is received as
>>> >>intended. Please find below.
>>> >>
>>> >>A
>>> >>side
>>> >>B side
>>> >>                                    ______________
>>> >>---------------------------------> |     B       |
>>> >>Invite                             |
>>> >>|-------------------------------> Invite
>>> >>                                   |
>>> >>|<------------------------------ 100 Trying
>>> >><--------------------------------- |             |     18x
>>> >>without contact
>>> >>header
>>> >>100 Trying                         |     2
>>> >>|<------------------------------
>>> >>                                   |             |
>>> >><--------------------------------- |             |
>>> >>18x with contact                   |             |
>>> >>---------------------------------->|     B
>>> >>|---------------------------------> ????????
>>> >>BYE                                |             |
>>> >>
>>> >>
>>> >>18x from B side received without contact header. 18x response
>>> >>has "To tag"
>>> >>and without Record Route.
>>> >>
>>> >>Thanks,
>>> >>kumar
>>> >>
>>> >>
>>> >>
>>> >>On Mon, Aug 17, 2009 at 11:24 PM, Vikram Chhibber
>>> >><[email protected]
>>> >>> wrote:
>>> >>
>>> >>> We can not see the attachment. A UAC should have no problem
>>> >>processing
>>> >>> a unreliable 18x response without Contact as it is optional.
>>> >>> It is definitely needed in a reliable 18x as without it, a
>>> >>UAC can not
>>> >>> construct a PRACK request. In this case, 18x will 
>>timeout and the
>>> >>> early dialog will be terminated.
>>> >>> On Wed, Aug 12, 2009 at 3:03 AM, raikkme
>>> >>rrrrr<[email protected]>
>>> >>> wrote:
>>> >>> > What should be the behaviour, in case 18X response is
>>> >>received with no
>>> >>> > Contact header for the below case?
>>> >>> >
>>> >>> > Please refer the attached document for sample scenario.
>>> >>> >
>>> >>> > The entity is behaving as a B2B, where BYE is received
>>> >>from one side.
>>> >>> >
>>> >>> > Thanks,
>>> >>> > kumar
>>> >>> >
>>> >>> > _______________________________________________
>>> >>> > Sip-implementors mailing list
>>> >>> > [email protected]
>>> >>> > 
>>https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>>> >>> >
>>> >>>
>>> >>_______________________________________________
>>> >>Sip-implementors mailing list
>>> >>[email protected]
>>> >>https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>>> >>
>>>
>>_______________________________________________
>>Sip-implementors mailing list
>>[email protected]
>>https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>>

_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to