From: Emeric Brun Date: Thu, 4 Mar 2021 09:27:10 +0000 (+0100) Subject: BUG/MEDIUM: peers: stop considering ack messages teaching a full resync X-Git-Tag: v2.4-dev18~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b0d60bed36cfbfead5a35e6a9520e8d5e9345a7f;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: peers: stop considering ack messages teaching a full resync The re-con cursor was updated receiving any ack message even if we are pushing a complete resync to a peer. This cursor is reset at the end of the resync but if the connection is broken during resync, we could re-start at an unwanted point. With this patch, the peer stops to consider ack messages pushing a resync since the resync process has is own acknowlegement and is always restarted from the beginning in case of broken connection. This patch should be backported on all supported branches ( >= 1.6 ) --- diff --git a/src/peers.c b/src/peers.c index cff5696b82..69c228796c 100644 --- a/src/peers.c +++ b/src/peers.c @@ -1813,6 +1813,10 @@ static inline int peer_treat_ackmsg(struct appctx *appctx, struct peer *p, uint32_t update; struct shared_table *st; + /* ignore ack during teaching process */ + if (p->flags & PEER_F_TEACH_PROCESS) + return 1; + table_id = intdecode(msg_cur, msg_end); if (!*msg_cur || (*msg_cur + sizeof(update) > msg_end)) { /* malformed message */