summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ospfd/ChangeLog5
-rw-r--r--ospfd/ospf_ism.c19
2 files changed, 13 insertions, 11 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 82e745ca..c9bdff65 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -16,6 +16,11 @@
* ospf_ia.c: (ospf_update_router_route) ospf->backbone could be
NULL when passed to ospf_find_asbr_route_through_area,
check for NULL first, CID #14.
+ * ospf_ism.c: (ism_change_state) NULL check on oi->area is
+ useless, it's always valid. Only possibility where it
+ couldn't be is if there is a race between abr_task and
+ cleaning up oi's, in which case a NULL check here isn't going
+ to do anything. Fixes CID #15.
2006-05-11 Paul Jakma <paul.jakma@sun.com>
diff --git a/ospfd/ospf_ism.c b/ospfd/ospf_ism.c
index f65c68c9..0875e92d 100644
--- a/ospfd/ospf_ism.c
+++ b/ospfd/ospf_ism.c
@@ -569,19 +569,16 @@ ism_change_state (struct ospf_interface *oi, int state)
ospf_check_abr_status (oi->ospf);
/* Originate router-LSA. */
- if (oi->area)
+ if (state == ISM_Down)
{
- if (state == ISM_Down)
- {
- if (oi->area->act_ints > 0)
- oi->area->act_ints--;
- }
- else if (old_state == ISM_Down)
- oi->area->act_ints++;
-
- /* schedule router-LSA originate. */
- ospf_router_lsa_timer_add (oi->area);
+ if (oi->area->act_ints > 0)
+ oi->area->act_ints--;
}
+ else if (old_state == ISM_Down)
+ oi->area->act_ints++;
+
+ /* schedule router-LSA originate. */
+ ospf_router_lsa_timer_add (oi->area);
/* Originate network-LSA. */
if (old_state != ISM_DR && state == ISM_DR)