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).
--
Iñaki Baz Castillo
<ibc(a)aliax.net>