2010/11/24 Alex Balashov abalashov@evaristesys.com:
On 11/24/2010 10:36 AM, Iñaki Baz Castillo wrote:
It works as I expected:
The CANCEL arrives to Kamailio (1.5) with Totag (bug in UAC).
Kamailio does t_relay() for the CANCEL without checking
loose-routing or Totag (CANCEL threatment is now above loose-routing section).
- Kamailio replies 200 to the CANCEL and generates its own CANCEL (of
course with no Totag).
It seems to me that this should not work here if Kamailio were being properly strict.
As per RFC 3261 Section 9.1, "Client Behavior" in "Canceling a Request:
The Request-URI, Call-ID, To, the numeric part of CSeq, and From header fields in the CANCEL request MUST be identical to those in the request being cancelled, including tags.
If the initial INVITE did not have a To tag (which, it of course, doesn't), neither should the CANCEL. Otherwise, this CANCEL should not be matched.
I know, sure. This is a bug in the UAC. I have done a workaround in Kamailio. And as I expected, Kamailio doesn't care the existence or not of a Totag, it just matches the INVITE transaction by inspecting the Via branch (which allows my workaround).