{
const rte *trte = new ?: old;
- /* Have we exported the old route? */
- if (old && !bmap_test(&c->export_accepted_map, old->id))
- old = NULL;
-
- /* Ignore invalid routes */
- if (!rte_is_valid(new))
- new = NULL;
-
- if (!rte_is_valid(old))
- old = NULL;
-
- if (!new && !old)
- {
- channel_rte_trace_out(D_ROUTES, c, trte, "idempotent withdraw (filtered on import)");
- c->export_stats.withdraws_ignored++;
- return;
- }
-
/* Have we exported the old route? */
if (old)
{
rt_export_processed(&c->out_req, rpe->it.seq);
}
+ /* Have we exported the old route? */
+ if (old && !bmap_test(&c->export_accepted_map, old->id))
+ old = NULL;
+
+ /* Ignore invalid routes */
+ if (!rte_is_valid(new))
+ new = NULL;
+
+ if (!rte_is_valid(old))
+ old = NULL;
+
+ /* Update status map flags for id-only updates */
if (new && old && rte_same(new, old))
{
channel_rte_trace_out(D_ROUTES, c, new, "already exported");
}
else if (!new && !old)
{
- channel_rte_trace_out(D_ROUTES, c, u->update->new, "idempotent withdraw (squash)");
+ channel_rte_trace_out(D_ROUTES, c, u->update->new, "idempotent withdraw");
c->export_stats.withdraws_ignored++;
}
else