* isis_lsp.c (lsp_update): Fix previous commit - manipulate the right
	  database and only if LSP is really in the database (sanity check).
diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index 6a2be94..d9e65bb 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-18 Hasso Tepper <hasso at quagga.net>
+
+	* isis_lsp.c (lsp_update): Fix previous commit - manipulate the right
+	  database and only if LSP is really in the database (sanity check).
+
 2005-09-16 Hasso Tepper <hasso at quagga.net>
 
 	* isis_lsp.c (lsp_update): Remove LSP from database before updating
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index d147c65..a294bc8 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -418,11 +418,12 @@
 lsp_update (struct isis_lsp *lsp, struct isis_link_state_hdr *lsp_hdr,
 	    struct stream *stream, struct isis_area *area, int level)
 {
-  dnode_t *dnode;
+  dnode_t *dnode = NULL;
 
   /* Remove old LSP from LSP database. */
-  dnode = dict_lookup (area->lspdb[level], lsp->lsp_header->lsp_id);
-  dnode_destroy (dict_delete (area->lspdb[level], dnode));
+  dnode = dict_lookup (area->lspdb[level - 1], lsp->lsp_header->lsp_id);
+  if (dnode)
+    dnode_destroy (dict_delete (area->lspdb[level - 1], dnode));
 
   /* free the old lsp data */
   XFREE (MTYPE_STREAM_DATA, lsp->pdu);
@@ -434,8 +435,8 @@
   /* set the new values for lsp header */
   memcpy (lsp->lsp_header, lsp_hdr, ISIS_LSP_HDR_LEN);
 
-  /* Put LSP back into LSP database, now with updated data. */
-  lsp_insert (lsp, area->lspdb[level]);
+  if (dnode)
+    lsp_insert (lsp, area->lspdb[level - 1]);
 }
 
 /* creation of LSP directly from what we received */