summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2013-01-17 09:02:23 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2013-01-17 09:02:23 +0000
commitcbe06dcb707c5d30c9f7a5b30387b234325471c0 (patch)
tree19d41870623de51a5ae2fa619a46fd9aa3fe09e9
parent760921c82e392a574c8be0cddedc985a32564aaa (diff)
the peer might still send more DD messages, even if the RDE has
processed all received DDs (dd_pending == 0), so we need to check for state != NBR_STA_XCHNG; ok claudio@
-rw-r--r--usr.sbin/ospfd/lsreq.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/usr.sbin/ospfd/lsreq.c b/usr.sbin/ospfd/lsreq.c
index 840df7b24c3..fa5569c949c 100644
--- a/usr.sbin/ospfd/lsreq.c
+++ b/usr.sbin/ospfd/lsreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: lsreq.c,v 1.19 2010/05/26 13:56:08 nicm Exp $ */
+/* $OpenBSD: lsreq.c,v 1.20 2013/01/17 09:02:22 markus Exp $ */
/*
* Copyright (c) 2004, 2005 Esben Norby <norby@openbsd.org>
@@ -164,7 +164,9 @@ ls_req_list_free(struct nbr *nbr, struct lsa_entry *le)
start_ls_req_tx_timer(nbr);
}
- if (ls_req_list_empty(nbr) && nbr->dd_pending == 0)
+ /* we might not have received all DDs and are still in XCHNG */
+ if (ls_req_list_empty(nbr) && nbr->dd_pending == 0 &&
+ nbr->state != NBR_STA_XCHNG)
nbr_fsm(nbr, NBR_EVT_LOAD_DONE);
}