> I have one doubt in CANCEL/BYE operation. 
> The scenario is as follows :-
>
>    A               B
>    |               |
>    |    INVITE     |
>    |-------------->|
>    |  180 Ringing  |
>    |<--------------|
>    |               |
>
> User A invites user B. Now B responds with 
> 180 Ringing with to tag and hence establishes 
> early dialog. Now user A has decides that he 
> does not want to continue the call. Hence he 
> decides to terminate the dialog. Now according 
> to my opinion, there are two possible ways to 
> do so :-
>
> 1. A sends CANCEL to B. Then if B responds 
> with 2xx response to INVITE, then A terminates 
> the dialog by sending BYE. Else if B responds 
> with non-2xx code, then dialog will be 
> terminated and user A need to do any thing 
> more other than sending ACK.
>
> 2. A sends BYE to B (BYE can be sent as early 
> dialog is already established). B checks if 
> he has sent final response to INVITE. If so 
> he just reponds with 200 OK for BYE. Else if 
> B has not yet sent final response for INVITE, 
> then B sends a non-2xx  error code for INVITE 
> as soon as it sees BYE and then responds with 
> 200 for BYE.
>
> I feel that option 2 is better to terminate 
> dialog as it requires 2 messages less than 
> the option 1. 
>
> What is the procedure normally followed in the 
> above scenario :- Option 1 or Option 2 ? 

Option 1 should always be followed.  During forking
situations, option 2 only releases individual
dialogs (call-legs) instead of communicating to
a proxy to try releasing all the associated 
dialogs.

_______________________________________________
Sip-implementors mailing list
[EMAIL PROTECTED]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to