Hi, I can't understand why RFC3261 allows the use of a BYE instead of
a CANCEL to end an early-dialog. This is:
During an INVITE transaction the UAC can cancel it by sending a CANCEL or a BYE.
Of course, this is very different since a proxy receiving a CANCEL
replies it automatically (CANCEL is hop by hop) but a BYE would be
forwarded to each parallel location and so.
So imagine the case in which user_A (UAC) calls user_B through a proxy
that does parallel forking to each user_B location:
- user_A receives provisional responses of each user_B location
(different to_Tag so different early-dialogs).
- If user_A want to cancel the transaction it can:
- Send a single CANCEL (identical to the INVITE) so proxy will
handle it by replying 200 and forking to every user_B locations.
- Send an in-dialog BYE to *each* user_B location (am I right?).
This last point is impossible since a "180 Ringing" (for example) is
not required to include a "Contact", so how can UAC send the BYE?
RFC 3261 says:
----------------
15 Terminating a Session
When a BYE is received on a dialog, any session
associated with that dialog SHOULD terminate. A UA MUST NOT send a
BYE outside of a dialog. The caller's UA MAY send a BYE for either
confirmed or early dialogs, and the callee's UA MAY send a BYE on
confirmed dialogs, but MUST NOT send a BYE on early dialogs.
----------------
Also:
---------------
13.2.2.1 1xx Responses
The early dialog will only be needed if the UAC needs to send a
request to its peer within the dialog before the initial INVITE
transaction completes.
---------------
And also:
---------------
15.1.2 UAS Behavior
A UAS first processes the BYE request according to the general UAS
processing described in Section 8.2. A UAS core receiving a BYE
request checks if it matches an existing dialog. If the BYE does not
match an existing dialog, the UAS core SHOULD generate a 481
(Call/Transaction Does Not Exist) response and pass that to the
server transaction.
This rule means that a BYE sent without tags by a UAC will be
rejected. This is a change from RFC 2543, which allowed BYE
without tags.
---------------
So please note: is it allowed an early-dialog if the provisional
response (180|183...) has no "Contact" header?
If it's possible, how to send the BYE to terminate the INVITE
transaction if there is no remote target???
And of course, why the f**k is it allowed to terminate a early-dialog
with a BYE if CANCEL **does** exist?
Thanks a lot.
--
Iñaki Baz Castillo
<[EMAIL PROTECTED]>
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors