BUG/MEDIUM: peers: same table updates re-pushed after a re-connect
Some updates are pushed using an incremental update message after a
re-connection whereas the origin is forgotten by the peer.
These updates are never correctly acknowledged. So they are regularly
re-pushed after an idle timeout and a re-connect.
The fix consists to use an absolute update message in some cases.
diff --git a/src/peers.c b/src/peers.c
index a405918..be701a8 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -250,8 +250,8 @@
/* construct message */
/* check if we need to send the update identifer */
- if (st->last_pushed && ts->upd.key > st->last_pushed && (ts->upd.key - st->last_pushed) == 1) {
- use_identifier = 0;
+ if (!st->last_pushed || ts->upd.key < st->last_pushed || ((ts->upd.key - st->last_pushed) != 1)) {
+ use_identifier = 1;
}
/* encode update identifier if needed */