diff options
author | Markus Friedl <markus@cvs.openbsd.org> | 2013-01-17 09:02:23 +0000 |
---|---|---|
committer | Markus Friedl <markus@cvs.openbsd.org> | 2013-01-17 09:02:23 +0000 |
commit | cbe06dcb707c5d30c9f7a5b30387b234325471c0 (patch) | |
tree | 19d41870623de51a5ae2fa619a46fd9aa3fe09e9 /usr.sbin | |
parent | 760921c82e392a574c8be0cddedc985a32564aaa (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@
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/ospfd/lsreq.c | 6 |
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); } |