mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-03-15 12:01:37 +01:00
MEDIUM: peers: No longer ack updates during a full resync
ACK messages received by a peer sending updates during a full resync are ignored. So, on the other side, there is no reason to still send these ACK messages. Let's skip them. In addition, the received updates during this stage are not considered as to be acked. It is important to be sure to properly emit ACK messages once the full sync finished.
This commit is contained in:
parent
383bf11306
commit
590c5ff2ed
24
src/peers.c
24
src/peers.c
@ -1821,18 +1821,20 @@ int peer_treat_updatemsg(struct appctx *appctx, struct peer *p, int updt, int ex
|
||||
|
||||
expire = MS_TO_TICKS(table->expire);
|
||||
|
||||
if (updt) {
|
||||
if (msg_len < sizeof(update)) {
|
||||
TRACE_ERROR("malformed update message: message too small", PEERS_EV_SESS_IO|PEERS_EV_RX_MSG|PEERS_EV_PROTO_ERR, appctx, p, st);
|
||||
goto malformed_exit;
|
||||
}
|
||||
if (p->learnstate != PEER_LR_ST_PROCESSING) {
|
||||
if (updt) {
|
||||
if (msg_len < sizeof(update)) {
|
||||
TRACE_ERROR("malformed update message: message too small", PEERS_EV_SESS_IO|PEERS_EV_RX_MSG|PEERS_EV_PROTO_ERR, appctx, p, st);
|
||||
goto malformed_exit;
|
||||
}
|
||||
|
||||
memcpy(&update, *msg_cur, sizeof(update));
|
||||
*msg_cur += sizeof(update);
|
||||
st->last_get = htonl(update);
|
||||
}
|
||||
else {
|
||||
st->last_get++;
|
||||
memcpy(&update, *msg_cur, sizeof(update));
|
||||
*msg_cur += sizeof(update);
|
||||
st->last_get = htonl(update);
|
||||
}
|
||||
else {
|
||||
st->last_get++;
|
||||
}
|
||||
}
|
||||
|
||||
if (exp) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user