diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index 5e1bb2ba7b..aacfc996d3 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Wed Nov 3 11:46:27 EDT 2010 +Wed Nov 3 13:53:34 EDT 2010 diff --git a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c index 7d3280fef6..f77cdd3afa 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c +++ b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c @@ -8176,9 +8176,12 @@ outgoing_send(nta_outgoing_t *orq, int retransmit) if (orq->orq_method == sip_method_ack) ; - else if (!orq->orq_reliable) - outgoing_set_timer(orq, agent->sa_t1); /* Timer A/E */ - else if (orq->orq_try_tcp_instead && !tport_is_connected(tp)) + else if (!orq->orq_reliable) { + /* race condition on initial t1 timer timeout, set minimum initial timeout to 1000ms */ + unsigned t1_timer = agent->sa_t1; + if (t1_timer < 1000) t1_timer = 1000; + outgoing_set_timer(orq, t1_timer); /* Timer A/E */ + } else if (orq->orq_try_tcp_instead && !tport_is_connected(tp)) outgoing_set_timer(orq, agent->sa_t4); /* Timer N3 */ }