[Kamailio-Devel] [Kamailio-Users] [Bulk] Re: drop() and tm timers.
Aurelien Grimaud
gstelzz at yahoo.fr
Mon Dec 29 21:47:01 CET 2008
Daniel-Constantin Mierla a écrit :
>
>
> On 12/28/08 23:56, Aurelien Grimaud wrote:
>> Daniel-Constantin Mierla a écrit :
>>
>>> On 12/20/08 14:09, Aurelien Grimaud wrote:
>>>
>>>> Daniel-Constantin Mierla a écrit :
>>>>
>>>>> On 12/19/08 10:10, Aurelien Grimaud wrote:
>>>>>
>>>>>> Klaus Darilion a écrit :
>>>>>>
>>>>>>
>>>>>>> Strange!
>>>>>>>
>>>>>>> Nevertheless there is no need to drop 100 as 100 is never relayed.
>>>>>>>
>>>>>> Yep, my mistake !
>>>>>>
>>>>>> The first destination chosen for serial forking was sending a 101
>>>>>> with sdp, which was relayed to caller.
>>>>>>
>>>>> 101 - I haven't heard of such reply so far ... what is the reason
>>>>> phrase?
>>>>>
>>>> Well, this is a home made reply from a pstn gateway.
>>>> The pstn gateway sens request to a pstn network equipement.
>>>> As soon as the pstn equipements answers a Progress, a 101 is
>>>> relayed to openser.
>>>>
>>> ok, i understand.
>>>
>>>> It contains really early sdp.
>>>> I thought it smart.
>>>> I am not so sure now !
>>>>
>>> If you want to get to tm but not relayed upstream, you should drop
>>> it in an onreply_route armed via tm (t_on_reply(...) call), not the
>>> default onreply_route.
>>>
>>>
>> Well, actually I dropped the message in an onreply_route armed via tm
>> and timer were not canceled.
>> Correct me if I'm wrong, but I think that the timer processing is
>> *after* the reply_route execution.
>>
> retransmission timers are reset before executing the tm onreply route.
>
Yes sure, retransmission timers are reset before executing the tm
onreply route.
Ok too : fr_timer is disabled on final reply.
> /* stop final response timer only if I got a final response */
> if ( msg_status >= 200 ) {
> reset_timer( &uac->request.fr_timer);
> }
But, fr_timer is switched to fr_inv_timer after executing onreply_route.
So, If all provisional are dropped, the fr_timer is not changed to
fr_inv_timer.
Should not fr_timer be changed to fr_inv_timer even if message is dropped ?
I mean, my fr_timer is 10 seconds. fr_inv_timer is 120 seconds.
I expect it to work this way :
relay INVITE to destination A.
A does not answer anything : fr_timer is triggered (A is probably down,
or unreachable)
failure route : serial forking to destination B
or
relay INVITE to destination A
A answers 180, fr_timer is switched to fr_inv_timer (A is processing the
call)
No final reply for fr_inv_timer seconds (A does not answer anymore :
network problem, host down)
failure_route : serial forking to destination B
If 180 is dropped, then the behavior is as follow
relay INVITE to destination A
A answers 180 which is dropped.
after 10 seconds (fr_timer) : failure route because of fr_timer.
This is a wrong failure report. A is processing the call, serial forking
should not occur.
Documentation says :
> Timer which hits if no final reply for an INVITE arrives after a
provisional message was received (in seconds). *This timer is started
after the first provisional response.* Thus, fast failover (no 100
trying from gateway) can be achieved by setting fr_timer to low values.
No warning on dropped messages.
> You talk about this with one of the patches I sent or before that?
The problem occurred with openser 1.2.1, but the svn source code has the
same issue imho.
Regards.
Aurelien
>
> Cheers,
> Daniel
>
More information about the Devel
mailing list