summaryrefslogtreecommitdiff
path: root/proto/ospf/neighbor.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/neighbor.c')
-rw-r--r--proto/ospf/neighbor.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/proto/ospf/neighbor.c b/proto/ospf/neighbor.c
index 7ce682b0..c143b130 100644
--- a/proto/ospf/neighbor.c
+++ b/proto/ospf/neighbor.c
@@ -176,8 +176,8 @@ ospf_neigh_chstate(struct ospf_neighbor *n, u8 state)
if (state == NEIGHBOR_EXSTART)
{
- /* First time adjacency */
- if (n->adj == 0)
+ /* First time adjacency attempt */
+ if (old_state < NEIGHBOR_EXSTART)
n->dds = random_u32();
n->dds++;
@@ -608,6 +608,12 @@ dbdes_timer_hook(timer *t)
if ((n->state == NEIGHBOR_EXCHANGE) && (n->myimms & DBDES_MS))
ospf_rxmt_dbdes(p, n);
+
+ if ((n->state > NEIGHBOR_LOADING) && !(n->myimms & DBDES_MS))
+ {
+ ospf_reset_ldd(p, n);
+ tm_stop(n->dbdes_timer);
+ }
}
static void