Klaus Darilion wrote:
Hi Christian!Is the behavior identically for all transactions or is there a difference between INVITE and other transactions?
>> - INVITE transactions: FRT initially equals fr_timer and gets set to >> fr_inv_timer after receiving first provisional responseThis is only true for INVITE transactions, all other transactions only use the fr_timer. This makes sense since INVITE transactions normally involve user interaction (ringing).
The code responsible for that is in /modules/tm/t_reply.c, reply_received(..) function:
/* update FR/RETR timers on provisional replies */
if (msg_status < 200 && (restart_fr_on_each_reply ||
((last_uac_status<msg_status) &&
((msg_status >= 180) || (last_uac_status == 0)))
) ) { /* provisional now */
if (is_invite(t)) {
/* invite: change FR to longer FR_INV, do not
* attempt to restart retransmission any more
*/
backup_list = set_avp_list(&t->user_avps);
if (!fr_inv_avp2timer(&timer)) {
DBG("DEBUG:tm:reply_received:
FR_INV_TIMER = %d\n", timer);
set_timer(&uac->request.fr_timer,
FR_INV_TIMER_LIST, &timer);
t->flags |= T_NOISY_CTIMER_FLAG;
} else {
set_timer(& uac->request.fr_timer,
FR_INV_TIMER_LIST, 0);
}
set_avp_list(backup_list);
} else {
/* non-invite: restart retransmissions (slow
now) */
uac->request.retr_list = RT_T2;
set_timer(&uac->request.retr_timer, RT_T2, 0);
}
} /* provisional replies */
- Christian
regards klaus Christian Schlatter wrote:Ovidiu Sas wrote:Hi Klaus, You can use the fr_timer from the tm module: http://openser.org/docs/modules/1.1.x/tm.html#AEN108 If you don't get any reply from the far end, this timer will fire.I recently had a look at the timer related source code and that is what I wrote down:- Each SIP transaction has a final response timer (FRT) - SIP transactions fail (failure_route, status 408) when FRT fires- TM module exposes final response timers (FRT) fr_timer and fr_inv_timer (can be set using AVP)- INVITE transactions: FRT initially equals fr_timer and gets set to fr_inv_timer after receiving first provisional response- setting fr_timer to a low value (e.g. 3s) allows for fast INVITE failoverSo I'm setting fr_timer to a low value for local INVITE transactions. Local here means sessions between endpoints from our network domain. Something along the lines:route[0] { if (method==“INVITE”) { # set fr_timer to 3 seconds avp_write("i:3", "$avp(fr_timer)"); # call FAILURE_DEFAULT_RELAY routing block on transaction failure t_on_failure("FAILURE_DEFAULT_RELAY"); t_relay(); exit; } } failure_route[FAILURE_DEFAULT_RELAY] { # status 408 ? transaction timed out if (t_check_status("408")) { # try next target if (ds_next_domain()) { t_relay(); } } } - ChristianRegards, Ovidiu Sas On 12/18/06, Klaus Darilion <[EMAIL PROTECTED]> wrote:Hi! i wonder if there is a timer which controls the timeout for provisional replies.E.g. I want to cancel an INVITE and retry another gateway if the gatewaydoes not respond with 100 (or 180) in a certain time. regards klaus -- Klaus Darilion nic.at _______________________________________________ Users mailing list [email protected] http://openser.org/cgi-bin/mailman/listinfo/users_______________________________________________ Users mailing list [email protected] http://openser.org/cgi-bin/mailman/listinfo/users------------------------------------------------------------------------ _______________________________________________ Users mailing list [email protected] http://openser.org/cgi-bin/mailman/listinfo/users
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ Users mailing list [email protected] http://openser.org/cgi-bin/mailman/listinfo/users
