ospfd: ospf_ase.c, external_lsa locking fixes.

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Acked-by: Feng Lu <lu.feng@6wind.com>
diff --git a/ospfd/ospf_ase.c b/ospfd/ospf_ase.c
index 027e49f..74c1711 100644
--- a/ospfd/ospf_ase.c
+++ b/ospfd/ospf_ase.c
@@ -723,6 +723,8 @@
   rn = route_node_get (top->external_lsas, (struct prefix *) &p);
   if ((lst = rn->info) == NULL)
     rn->info = lst = list_new();
+  else
+    route_unlock_node (rn);
 
   /* We assume that if LSA is deleted from DB
      is is also deleted from this RT */
@@ -743,13 +745,13 @@
   p.prefixlen = ip_masklen (al->mask);
   apply_mask_ipv4 (&p);
 
-  rn = route_node_get (top->external_lsas, (struct prefix *) &p);
-  lst = rn->info;
+  rn = route_node_lookup (top->external_lsas, (struct prefix *) &p);
 
-  /* XXX lst can be NULL */
-  if (lst) {
+  if (rn) {
+    lst = rn->info;
     listnode_delete (lst, lsa);
     ospf_lsa_unlock (&lsa); /* external_lsas list */
+    route_unlock_node (rn);
   }
 }