[Users] Call not torn down when CANCEL sent before INVITE message is finished being processed
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Tue Nov 1 10:39:07 CET 2005
Hi Tavis,
this is similar with an idea suggested by Juha some days ago. Just to
improve the CANCEL processing, right after "
log(1, "Route{0}: There was a CANCEL that matched a
transaction..");
just to:
t_relay();
exit;
regards,
bogdan
Tavis P wrote:
>Just wanted to post an update on this issue, someone posted a link to a
>"t_check_trans()" function (its in the openser cookbook) that could be
>used to determine if the CANCEL had a corresponding transaction.
>
>If the transaction was not found it could be ignored by OpenSER leading
>the UAC to resend the CANCEL.
>
>After a few seconds OpenSER finishes processing the INVITE, creates a
>transaction and that matches one of the retransmitted CANCEL messages
>and the call is torn down properly
>
>This has resolved the issue I came across, just in case anyone was curious
>
>eg.
>
> if ( is_method("CANCEL") )
> {
> # If the transaction this message belongs to isn't known
>about by
> # the proxy, then silently discard it
> if ( !t_check_trans() )
> {
> log(1, "Route{0}: There was a CANCEL that DIDN't match a
>transaction..");
> exit;
> }
> log(1, "Route{0}: There was a CANCEL that matched a
>transaction..");
> }
>
>
>
>Klaus Darilion wrote:
>
>
>
>>Tavis P wrote:
>>
>>
>>
>>>With the latest CVS build of OSER, when an INVITE is sent followed by a
>>>CANCEL, before OSER has finished processing the initial INVITE, the
>>>outbound call is not torn down, and SER routes the CANCEL message to
>>>
>>>
>>AFAIK this may happen with all versions of ser/openser.
>>
>>btw: Your SIPURA is broken:
>>1. It sends a CANCEL although it has not received a response yet.
>>According tot the standard the UAC must withheld the CANCEL until a
>>provisional response is received.
>>
>>2. It sends an INVITE right after the CANCEL. Weird.
>>
>>regards
>>klaus
>>
>>
>>
More information about the Users
mailing list