2003-07-25 kamatchi soundaram <kamatchi@tdd.sj.nec.com>

        * ospf_packet.c (ospf_ls_upd_send_queue_event): get next route
          node in body of the loop to avoid chance that route node
          is unlocked and deleted before the next iteration tries to
          get next route node.
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 7720adc..27454aa 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,10 @@
+2003-07-25 kamatchi soundaram <kamatchi@tdd.sj.nec.com>
+
+        * ospf_packet.c (ospf_ls_upd_send_queue_event): get next route
+          node in body of the loop to avoid chance that route node
+          is unlocked and deleted before the next iteration tries to 
+          get next route node.
+
 2003-05-24 Kenji Yabuuchi
 
 	* ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index 9e4be06..a0a9931 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -3113,19 +3113,23 @@
 {
   struct ospf_interface *oi = THREAD_ARG(thread);
   struct route_node *rn;
+  struct route_node *rnext;
   
   oi->t_ls_upd_event = NULL;
 
   if (IS_DEBUG_OSPF_EVENT)
     zlog_info ("ospf_ls_upd_send_queue start");
 
-  for (rn = route_top (oi->ls_upd_queue); rn; rn = route_next (rn))
+  for (rn = route_top (oi->ls_upd_queue); rn; rn = rnext)
     {
+      
+      rnext = route_next (rn);
+      
       if (rn->info == NULL)
-	continue;
+        continue;
 
       while (!list_isempty ((list)rn->info))
-	ospf_ls_upd_queue_send (oi, rn->info, rn->p.u.prefix4);
+        ospf_ls_upd_queue_send (oi, rn->info, rn->p.u.prefix4);
 
       list_delete (rn->info);
       rn->info = NULL;