BUG/MINOR: peers: some updates are pushed twice after a resync.
This bug is due to a copy/paste error and was introduced
with peers-protocol v2:
The last_pushed pointer was not correctly reset to the teaching_origin at
the end of the teaching state but to the first update present in the tree.
The result: some updates were re-pushed after leaving the teaching state.
This fix needs to be backported to 1.6.
diff --git a/src/peers.c b/src/peers.c
index a8066c5..b3a14e6 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -1491,9 +1491,7 @@
/* push local updates */
if (!eb || eb->key > st->teaching_origin) {
st->flags |= SHTABLE_F_TEACH_STAGE2;
- eb = eb32_first(&st->table->updates);
- if (eb)
- st->last_pushed = eb->key - 1;
+ st->last_pushed = st->teaching_origin;
break;
}