From f50f04be51f0e43a20ac2dceef1a8115d76dbb25 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 28 Mar 2014 14:33:47 -0400 Subject: [PATCH] FS-6356: --resolve fix assert when you set the time > 15 days in the future during operation while things are in queue to be processeed --- libs/sofia-sip/libsofia-sip-ua/nta/nta.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c index 9a357a9249..d1a3e68cab 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nta/nta.c +++ b/libs/sofia-sip/libsofia-sip-ua/nta/nta.c @@ -1280,17 +1280,15 @@ void agent_timer(su_root_magic_t *rm, su_timer_t *timer, nta_agent_t *agent) if (next == latest) { /* Do not set timer? */ - SU_DEBUG_9(("nta: timer not set\n" VA_NONE)); - assert(!agent->sa_out.completed->q_head); - assert(!agent->sa_out.trying->q_head); - assert(!agent->sa_out.inv_calling->q_head); - assert(!agent->sa_out.re_list); - assert(!agent->sa_in.inv_confirmed->q_head); - assert(!agent->sa_in.preliminary->q_head); - assert(!agent->sa_in.completed->q_head); - assert(!agent->sa_in.inv_completed->q_head); - assert(!agent->sa_in.re_list); - return; + /* check it there are still things queued, if there are, that means everything scheduled is > 15 days in the future */ + /* in this case, we had a large time shift, we should schedule for 15 days in the future (which is probably still before now) */ + /* and this should sort itself out on the next run through */ + if ( !agent->sa_out.completed->q_head && !agent->sa_out.trying->q_head && !agent->sa_out.inv_calling->q_head && + !agent->sa_out.re_list && !agent->sa_in.inv_confirmed->q_head && !agent->sa_in.preliminary->q_head && + !agent->sa_in.completed->q_head && !agent->sa_in.inv_completed->q_head && !agent->sa_in.re_list ) { + SU_DEBUG_9(("nta: timer not set\n" VA_NONE)); + return; + } } if (next == now) if (++next == 0) ++next;