summaryrefslogtreecommitdiff
path: root/isisd/isis_spf.c
diff options
context:
space:
mode:
authorhasso <hasso>2004-05-19 18:45:03 +0000
committerhasso <hasso>2004-05-19 18:45:03 +0000
commit62843e433d8f85bce381edc6202c4af6c5cec31b (patch)
treef58d372dd6ac4c45073d1fd08620cdc9ffe3f1c2 /isisd/isis_spf.c
parent00995cfcc9cb30afabb3242837753ab1eb7fdb85 (diff)
Fixing crash fix attempt. It's still mess and logic is wrong and ... but at
least periodic spf works again.
Diffstat (limited to 'isisd/isis_spf.c')
-rw-r--r--isisd/isis_spf.c12
1 files changed, 9 insertions, 3 deletions
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)