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 )
This commit is contained in:
Emeric Brun 2021-03-04 10:27:10 +01:00 committed by Willy Tarreau
parent 437e48ad92
commit b0d60bed36
1 changed files with 4 additions and 0 deletions

View File

@ -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 */