From d008bf8a76c98098cce3264477249b6213cacf56 Mon Sep 17 00:00:00 2001 From: Simon Duquennoy Date: Fri, 3 Jun 2016 12:23:56 +0200 Subject: [PATCH] Fix rpl_select_parent in the non-probing case --- core/net/rpl/rpl-dag.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index c0a616b9d..89db83750 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -880,9 +880,9 @@ rpl_select_parent(rpl_dag_t *dag) rpl_parent_t *best = best_parent(dag, 0); if(best != NULL) { +#if RPL_WITH_PROBING if(rpl_parent_is_fresh(best)) { rpl_set_preferred_parent(dag, best); - dag->rank = rpl_rank_via_parent(dag->preferred_parent); } else { /* The best is not fresh. Look for the best fresh now. */ rpl_parent_t *best_fresh = best_parent(dag, 1); @@ -893,18 +893,20 @@ rpl_select_parent(rpl_dag_t *dag) /* Use best fresh */ rpl_set_preferred_parent(dag, best_fresh); } -#if RPL_WITH_PROBING - /* Probe the new best parent shortly in order to get a fresh estimate */ + /* Probe the best parent shortly in order to get a fresh estimate */ dag->instance->urgent_probing_target = best; rpl_schedule_probing(dag->instance); +#else /* RPL_WITH_PROBING */ + rpl_set_preferred_parent(dag, best); + dag->rank = rpl_rank_via_parent(dag->preferred_parent); #endif /* RPL_WITH_PROBING */ } } else { - rpl_set_preferred_parent(dag, best); - dag->rank = INFINITE_RANK; + rpl_set_preferred_parent(dag, NULL); } - return best; + dag->rank = rpl_rank_via_parent(dag->preferred_parent); + return dag->preferred_parent; } /*---------------------------------------------------------------------------*/ void