From a6a09985298815622aa3d9e282bca1e5fa4d961d Mon Sep 17 00:00:00 2001 From: Emeric Brun Date: Tue, 22 Sep 2015 15:34:19 +0200 Subject: [PATCH] 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. --- src/peers.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/peers.c b/src/peers.c index a40591831f..be701a8631 100644 --- a/src/peers.c +++ b/src/peers.c @@ -250,8 +250,8 @@ static int peer_prepare_updatemsg(struct stksess *ts, struct shared_table *st, c /* 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 */