+1 to what Bob says. In addition, I suggest you read:
* RFC 5057 Multiple Dialog Usages in the Session Initiation Protocol * RFC 5407 Example Call Flows of Race Conditions in the Session Initiation Protocol Thanks, Paul On 8/3/11 3:37 PM, Bob Penfield wrote: > It may just be part of your implementation, but Transactions are independent > of dialogs. There is nothing in RFC 3261 that associates transactions and > dialogs together in a way that the state of the dialog would affect the state > of a pending transaction. > > The main point is that the reception of a BYE does not mean that the UA that > received the BYE can simply ignore any pending transaction that may be > related to that dialog. That UA must still send a final response to requests > that it has received. In the case of receiving a BYE, the recommendation in > 3261 is to send a 487 response to each of those pending transactions. The > same applies to the UA sending the BYE in that it must still be ready to > receive responses on outstanding transactions (i.e. the transaction state > machines must continue to run until a final response is received of it times > out). > > > cheers, > (-:bob > > > > > -----Original Message----- > From: sip-implementors-boun...@lists.cs.columbia.edu > [mailto:sip-implementors-boun...@lists.cs.columbia.edu] On Behalf Of Leo Leo > Sent: Wednesday, August 03, 2011 2:57 PM > To: sip-implementors@lists.cs.columbia.edu > Subject: Re: [Sip-implementors] BYE before call answer > > Hi, Paul, > > There is something missing here, please explain it to me. > >> They BYE does *not* "terminate all transactions"! >> Every transaction must follow its own state machine, independent of any >> other transaction. > >> You MUST attempt to send some final response to any outstanding >> transactions even if a BYE transaction has been completed. > >> The BYE only ends the Invite-dialog-usage. > > If BYE only ends the dialog, what does the UA must to do with any other > transaction within that dialog? As far as I know, the transactions within a > dialog ara attached its existence. > > There is no sense to send or to receive some message from earlier > transactions (just like retransmissions) after a BYE request or a BYE > response received. > > Lets say the BYE received has come just after sending the re-INVITE. > Following your explanation, the dialog must be finished, but the transaction > from re-INVITE doesn't. Then, the re-INVITE will be retransmited and the UA > which has sent the BYE will still answer after the dialog had been finished. > > Anyway, I know the dialog and the transactions will be finished, the question > is when. Moreover, in some cases it will flood the network unnecessarily. > > If I was not so clear, I meant "As the BYE terminates all transactions, " as > "As the BYE terminates all transactions of the associated established dialog". > > Thanks. > > > Leonardo > > > ________________________________ > De: Paul Kyzivat<pkyzi...@alum.mit.edu> > Para: sip-implementors@lists.cs.columbia.edu > Enviadas: Quarta-feira, 3 de Agosto de 2011 14:37 > Assunto: Re: [Sip-implementors] BYE before call answer > > On 7/27/11 8:29 AM, Leo Leo wrote: >>>> Interesting, never thought about it. So, if I send a re-INVITE for >>>> which I have no final reply yet and then I send a BYE, should the UAS >>>> reply 200 for the BYE and terminate the remaining re-INVITE >>>> transasction without sending a final response? >> >>>> Or should the UAS reply a "491 Request Pending" for the BYE? Anyhow >>>> section 14.2 in RFC 3261 just indicates that 491 is useful when there >>>> is a pending re-INVITE from A to B and B sends a re-INVITE to A. In >>>> that case A should reply 491. >> A re-INVITE must not be forked, as RFC says in section 14. Then, no BYE >> might come for a re-INVITE. The BYE shall be understood in order to finish >> the dialog itself. The CANCEL must be used in that case. > > It doesn't matter if the reinvite is forked. A reinvite doesn't > establish an early dialog, because there is already a final dialog. > And you may send a BYE within the dialog, regardless of whether there is > a reinvite outstanding or not. > >>>> The unique transaction which remains is the BYE transaction for sending >>>> another 200 OK for some retransmission. >>>> >>>> >> Although, the UAC may send some final response (i.e. 487) before >> sending the 200 OK for the BYE. In matter fact, there is some >> homologating procedures which requires this behaviour. >> >>> If the BYE is supposed to "magically" terminate all the pending >>> transactions within the dialog (without requiring a final response for >>> them) then I see no reason to send a 487 (maybe it would fail as the >>> UAC would already terminate the client transaction for the initial >>> INVITE). >> >> As the BYE terminates all transactions, it not really necessarilly. However, >> it is desired to send the final response in order to avoid retransmissions >> or unexpectable behavour . I think that's why some homologating procedures >> requires that. Sending the final response (i.e.487) before 200 OK is >> reliable. > > They BYE does *not* "terminate all transactions"! > Every transaction must follow its own state machine, independent of any > other transaction. > > You MUST attempt to send some final response to any outstanding > transactions even if a BYE transaction has been completed. > > The BYE only ends the Invite-dialog-usage. > > Thanks, > Paul > > >> Leonardo >> >> >> ________________________________ >> De: Iñaki Baz Castillo<i...@aliax.net> >> Para: Leo Leo<lafa...@yahoo.com.br> >> Cc: >> "sip-implementors@lists.cs.columbia.edu"<sip-implementors@lists.cs.columbia.edu> >> Enviadas: Quarta-feira, 27 de Julho de 2011 9:03 >> Assunto: Re: [Sip-implementors] BYE before call answer >> >> 2011/7/27 Leo Leo<lafa...@yahoo.com.br>: >>> Anyway, the RFC says that a receiving BYE must to finish all transactions >>> of the associated dialog. >> >> Interesting, never thought about it. So, if I send a re-INVITE for >> which I have no final reply yet and then I send a BYE, should the UAS >> reply 200 for the BYE and terminate the remaining re-INVITE >> transasction without sending a final response? >> >> Or should the UAS reply a "491 Request Pending" for the BYE? Anyhow >> section 14.2 in RFC 3261 just indicates that 491 is useful when there >> is a pending re-INVITE from A to B and B sends a re-INVITE to A. In >> that case A should reply 491. >> >> >>> The unique transaction which remains is the BYE transaction for sending >>> another 200 OK for some retransmission. >>> >>> Although, the UAC may send some final response (i.e. 487) before sending >>> the 200 OK for the BYE. In matter fact, there is some homologating >>> procedures which requires this behaviour. >> >> If the BYE is supposed to "magically" terminate all the pending >> transactions within the dialog (without requiring a final response for >> them) then I see no reason to send a 487 (maybe it would fail as the >> UAC would already terminate the client transaction for the initial >> INVITE). >> >> >> Interesting topic :) >> >> Regards. >> >> >> >> >> > > _______________________________________________ > Sip-implementors mailing list > Sip-implementors@lists.cs.columbia.edu > https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors > _______________________________________________ > Sip-implementors mailing list > Sip-implementors@lists.cs.columbia.edu > https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors > > _______________________________________________ > Sip-implementors mailing list > Sip-implementors@lists.cs.columbia.edu > https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors > _______________________________________________ Sip-implementors mailing list Sip-implementors@lists.cs.columbia.edu https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors