From 9c13c7a57928f955083f69650435f11a84694743 Mon Sep 17 00:00:00 2001 From: Emeric Brun Date: Tue, 23 Feb 2021 17:08:08 +0100 Subject: [PATCH] BUG/MEDIUM: peers: reset commitupdate value in new conns The commitupdate value of the table is used to check if the update is still pending for a push for all peers. To be sure to not miss a push we reset it just after a handshake success. This patch should be backported on all supported branches ( >= 1.6 ) (cherry picked from commit cc9cce9351c2d64476dbe2f35c43cde8a3f97ebe) Signed-off-by: Christopher Faulet (cherry picked from commit cd0a30e441faa7d2c6d71f9541d092140f04e6ef) Signed-off-by: Christopher Faulet (cherry picked from commit 228bf0088078ea872fcab61db93a6c306c2d0d0c) Signed-off-by: Christopher Faulet --- src/peers.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/peers.c b/src/peers.c index 4e8fe1f..d17a4b6 100644 --- a/src/peers.c +++ b/src/peers.c @@ -2148,6 +2148,8 @@ static inline void init_accepted_peer(struct peer *peer, struct peers *peers) if ((int)(st->table->localupdate - st->update) < 0) st->update = st->table->localupdate + (2147483648U); st->teaching_origin = st->last_pushed = st->update; + if ((int)(st->last_pushed - st->table->commitupdate) > 0) + st->table->commitupdate = st->last_pushed; HA_SPIN_UNLOCK(STK_TABLE_LOCK, &st->table->lock); } @@ -2198,6 +2200,8 @@ static inline void init_connected_peer(struct peer *peer, struct peers *peers) if ((int)(st->table->localupdate - st->update) < 0) st->update = st->table->localupdate + (2147483648U); st->teaching_origin = st->last_pushed = st->update; + if ((int)(st->last_pushed - st->table->commitupdate) > 0) + st->table->commitupdate = st->last_pushed; HA_SPIN_UNLOCK(STK_TABLE_LOCK, &st->table->lock); } -- 1.7.10.4