[Users] failure route problem
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Mon Aug 29 12:55:46 CEST 2005
Hi Klaus,
I just committed a new function on TM module which allows you to check
if an INVITE was explicitly cancelled by the UAC via a CANCEL request. See:
http://www.openser.org/docs/modules/0.10.x/tm.html#AEN482
regards,
bogdan
Klaus Darilion wrote:
> I do not understand the whole scheme of codes and UAS codes, and local
> generated responses vs. received responses.
>
> I think it should be simple like:
> 1. if CANCEL is received, mark the corresponding transaction as
> "canceled by caller"
> 2. allow to check if a transcation is "canceled by caller"
>
> regards
> klaus
>
> Bogdan-Andrei Iancu wrote:
>
>> Hi Klaus, Hi Juha,
>>
>> I agree with Juha - failure route must catch all negative replies
>> disregarding its cause; also "487" is RFC compliant for cancelled
>> INVITEs, so we should stick to it.
>>
>> secondly, I also see your problem and I agree that somehow, the admin
>> must have the possibility (via scripting) to deal with it.
>>
>> I suggested a solution in a previous email (like t_check_status to be
>> able to check also the UAC codes and not only the UAS)... but no
>> opinion on this.....
>>
>> regards,
>> bogdan
>>
>>
>> Klaus Darilion wrote:
>>
>>> Hi Juha!
>>>
>>>
>>> Juha Heinanen wrote:
>>>
>>>> Klaus Darilion writes:
>>>>
>>>> > I wonder if there is any reason at all, why a failure route will
>>>> be > executed in case of the caller cancels the call. Thus,
>>>> another option > would be to remove execution of the failure route
>>>> if the caller cancels > the call.
>>>>
>>>> i don't like these kind of exceptions. a failure route will be
>>>> definition be called if failure response is received. i have in my
>>>> failure route test
>>>>
>>>> if (t_check_status("487")) {
>>>> return;
>>>> };
>>>
>>>
>>>
>>>
>>> This is also what I do at the moment.
>>>
>>>> which makes 487 a no-op and i don't have experienced any problems with
>>>> it.
>>>
>>>
>>>
>>>
>>> imagine a parallel forked call: one phone is busy (486), the other
>>> phone is ringing.
>>>
>>> If the caller cancels the call, the status is 486, thus
>>> t_check_status("487") won't match and you send a canceled call to
>>> the voicebox :-(
>>>
>>>> > If we still want to execute the failure route, having the call
>>>> canceled > by the caller should be visible in a status variable,
>>>> which is > explicitly set by the caller action, not by any reply
>>>> code from the > clients. Imagine a broken client which sends 4xx
>>>> instead of 487 for any > reason. If this is the last response, the
>>>> failure route again won't work > if it checks for status 487.
>>>>
>>>> coping with all kinds of broken clients in the proxy makes life very
>>>> complicated.
>>>>
>>>> whatever you decide to do make sure it is backwards compatible with
>>>> current behavior, i.e., introduce a new module option or something.
>>>> this is very dedicated stuff and i don't want to get into a position
>>>> where i need to re-test my ser.cfg.
>>>
>>>
>>>
>>>
>>> ACK. Maybe we could introduce a new function which allows to test if
>>> the called canceled the call.
>>>
>>> regards
>>> klaus
>>>
>>
>>
>
>
More information about the Users
mailing list