From: paul Date: Thu, 24 Jul 2003 23:22:57 +0000 (+0000) Subject: 2003-07-25 kamatchi soundaram X-Git-Tag: frr-2.0-rc1~3948 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=736d3441e267c76056d6fcc2f59cd09a90f3af21;p=mirror%2Ffrr.git 2003-07-25 kamatchi soundaram * 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 7720adccf1..27454aa28f 100644 --- a/ospfd/ChangeLog +++ b/ospfd/ChangeLog @@ -1,3 +1,10 @@ +2003-07-25 kamatchi soundaram + + * 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 9e4be062fd..a0a9931c62 100644 --- a/ospfd/ospf_packet.c +++ b/ospfd/ospf_packet.c @@ -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;