Fixes from LIU Xin.
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index 214b438..677e2c3 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -2087,6 +2087,8 @@
   if (!circuit->u.bc.is_dr[0])
     return ISIS_ERROR;		/* FIXME: purge and such */
 
+  circuit->u.bc.t_refresh_pseudo_lsp[0] = NULL;
+
   retval = lsp_pseudo_regenerate (circuit, 1);
 
   ref_time = circuit->area->lsp_refresh[0] > MAX_LSP_GEN_INTERVAL ?
@@ -2145,6 +2147,8 @@
   if (!circuit->u.bc.is_dr[1])
     return ISIS_ERROR;		/* FIXME: purge and such */
 
+  circuit->u.bc.t_refresh_pseudo_lsp[1] = NULL;
+
   retval = lsp_pseudo_regenerate (circuit, 2);
 
   ref_time = circuit->area->lsp_refresh[1] > MAX_LSP_GEN_INTERVAL ?
@@ -2211,6 +2215,7 @@
 
   area = THREAD_ARG (thread);
   assert (area);
+  area->t_tick = NULL;
   THREAD_TIMER_ON (master, area->t_tick, lsp_tick, area, 1);
 
   /*