Hi Greger,
I know that the RFC doesn't specify if CANCEL is or not allows within
the dialog - there were also some discussions on the sip-implementors
mailing list about how to handle a CANCEL within the dialog.
Anyhow, IMHO, even if allowed, CANCEL within the dialog makes less sense
- to be honest I saw no implementation doing something like this.
Now, back to the original subject: as Anders describe his problem, is
definitely not the case of a within the dialog CANCEL and we should come
up with some hints relevant to his case and avoid confusing the guy more
than necessary ;).
And regarding the t_relay() and CANCEL - there is no need to apply same
RURI transformations as for INVITE - TM saves the INVITE outgoing RURI;
when CANCEL comes, it is matched with an INVITE and the RURI for CANCEL
is automatically taken from the INVITE transaction.
regards,
Marian
Greger V. Teigre wrote:
Hi Marian!
Marian Dumitru wrote:
CANCEL has nothing to do with loose route - and
it will never hit he
loose route. The Route ser is set only when the dialog is established
(200 ok); and CANCEL happens *before* the dialog completion.
The big idea with CANCEL is to take care to route it *exactly* as its
INVITE.
AFAIK, CANCEL can happen both in-dialog and outside a dialog. This was
a part of the verification we did when developing the
ONsip.org
reference config filers. I'm not sure if the discussion was on serusers
or not, but as far as I remember, there is situation where CANCEL will
be in-dialog and thus can take the loose route path, i.e. reINVITEs.
As you will see in the
ONsip.org config files, CANCEL is handled as an
INVITE, but loose route test is done *before* the test on CANCEL to make
sure that any in-dialog CANCELs are handled properly.
As a hint, if you use TM, t_relay() all the time
will take care to
send the CANCEL to same destination as INVITE.
... as long as you have done the same r-uri transformations as with the
INVITE.
g-)
regards,
Marian
Greger V. Teigre wrote:
> Most likely you don't handle the CANCEL messages correctly. May be
> that you don't do proper loose route handling. Take a look at the
> example configs (and the Getting Started document) at
>
http://onsip.org/ You gain much be following the logic found there,
> they have been verified for all kinds of situations...
> g-)
>
> Anders Hansson wrote:
>
>> Hi all,
>> I´ve got a problem when trying to cancel an invite.
>> The situation: A makes a call to B (INVITE). B press the "hang up"
>> button. An here comes the problem.
>> From As side, everything is OK, but from Bs side, the phone is still
>> ringing...
>> How can a solve this problem? Anyone?
>>
>> Thanks,
>> Anders