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

This commit is contained in:
Michael Jerris 2014-03-28 14:33:47 -04:00
parent 0fe2039219
commit f50f04be51
1 changed files with 9 additions and 11 deletions

View File

@ -1280,18 +1280,16 @@ void agent_timer(su_root_magic_t *rm, su_timer_t *timer, nta_agent_t *agent)
if (next == latest) {
/* Do not set timer? */
/* 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));
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;
}
}
if (next == now) if (++next == 0) ++next;