diff options
Diffstat (limited to 'ospfd/ospf_ase.c')
| -rw-r--r-- | ospfd/ospf_ase.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ospfd/ospf_ase.c b/ospfd/ospf_ase.c index e99653f918..e18d8ddb31 100644 --- a/ospfd/ospf_ase.c +++ b/ospfd/ospf_ase.c @@ -748,8 +748,13 @@ void ospf_ase_unregister_external_lsa(struct ospf_lsa *lsa, struct ospf *top) if (rn) { lst = rn->info; - listnode_delete(lst, lsa); - ospf_lsa_unlock(&lsa); /* external_lsas list */ + struct listnode *node = listnode_lookup(lst, lsa); + /* Unlock lsa only if node is present in the list */ + if (node) { + listnode_delete(lst, lsa); + ospf_lsa_unlock(&lsa); /* external_lsas list */ + } + route_unlock_node(rn); } } |
