]> git.puffer.fish Git - mirror/frr.git/commitdiff
2003-07-25 kamatchi soundaram <kamatchi@tdd.sj.nec.com>
authorpaul <paul>
Thu, 24 Jul 2003 23:22:57 +0000 (23:22 +0000)
committerpaul <paul>
Thu, 24 Jul 2003 23:22:57 +0000 (23:22 +0000)
        * 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.

ospfd/ChangeLog
ospfd/ospf_packet.c

index 7720adccf1db8dcf17cd8b966593e478f7115371..27454aa28f36abcc30d40780a7e88333150adb81 100644 (file)
@@ -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
index 9e4be062fdf96b459f90ed6df2e1c683fa2e7d37..a0a9931c6252b11d9cfe419bd0f8ed1659bba42c 100644 (file)
@@ -3113,19 +3113,23 @@ ospf_ls_upd_send_queue_event (struct thread *thread)
 {
   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;