> 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
