From 62843e433d8f85bce381edc6202c4af6c5cec31b Mon Sep 17 00:00:00 2001 From: hasso Date: Wed, 19 May 2004 18:45:03 +0000 Subject: Fixing crash fix attempt. It's still mess and logic is wrong and ... but at least periodic spf works again. --- isisd/isis_spf.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'isisd') diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c index 1987e0d2..1e414c6c 100644 --- a/isisd/isis_spf.c +++ b/isisd/isis_spf.c @@ -942,12 +942,18 @@ isis_run_spf (struct isis_area *area, int level, int family) spftree->lastrun = time (NULL); spftree->pending = 0; - if (level == 1) + if (level == 1) { + /* FIXME: Should do it earlier. */ + spftree->t_spf_periodic = NULL; THREAD_TIMER_ON(master, spftree->t_spf_periodic, isis_run_spf_l1, area, isis_jitter(PERIODIC_SPF_INTERVAL, 10)); - else + } + else { + /* FIXME: Should do it earlier. */ + spftree->t_spf_periodic = NULL; THREAD_TIMER_ON(master, spftree->t_spf_periodic, isis_run_spf_l2, area, isis_jitter(PERIODIC_SPF_INTERVAL, 10)); + } return retval; } @@ -1039,7 +1045,7 @@ isis_spf_schedule (struct isis_area *area, int level) } /* FIXME: This stuff is just mess. All spf thread add/cancel logic should be reviewed. */ - /* THREAD_TIMER_OFF(spftree->t_spf_periodic); */ + THREAD_TIMER_OFF(spftree->t_spf_periodic); if (diff < MINIMUM_SPF_INTERVAL) { if (level == 1) -- cgit v1.2.1