uint rpos = rcnt;
for (const struct rt_pending_export *rpe = first; rpe;
rpe = atomic_load_explicit(&rpe->next, memory_order_acquire))
- if (e >= ecnt)
- RT_READ_RETRY(tr);
- else if (!seen || !bmap_test(seen, rpe->it.seq))
+ if (!seen || !bmap_test(seen, rpe->it.seq))
{
+ if (e >= ecnt)
+ RT_READ_RETRY(tr);
+
feed->exports[e++] = rpe->it.seq;
/* Copy also obsolete routes */
uint e = 0;
for (const struct rt_pending_export *rpe = first; rpe;
rpe = atomic_load_explicit(&rpe->next, memory_order_acquire))
- if (e >= ecnt)
- RT_READ_RETRY(tr);
- else if (!seen || !bmap_test(seen, rpe->it.seq))
+ if (!seen || !bmap_test(seen, rpe->it.seq))
{
+ if (e >= ecnt)
+ RT_READ_RETRY(tr);
+
feed->exports[e++] = rpe->it.seq;
if (rpe->it.old && (!best || (rpe->it.old != &best->rte)))
{