mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-29 14:28:03 +00:00
BUG/MEDIUM: peers: fix partial message decoding
peer_recv_msg() may return because the message is incomplete without checking if a shutdown is pending for the SC. The function relies on co_getblk() to detect shutdowns. However, the message length decoding may be interrupted if the multi-bytes integer is incomplete. In this case, the SC is not check for shutdowns. When this happens, this leads to an appctx spinning loop. This patch should fix the issue #2373. It must be backported to 2.8.
This commit is contained in:
parent
89807a76d6
commit
a7777bbf79
@ -2455,7 +2455,7 @@ static inline int peer_recv_msg(struct appctx *appctx, char *msg_head, size_t ms
|
||||
return 1;
|
||||
|
||||
incomplete:
|
||||
if (reql < 0) {
|
||||
if (reql < 0 || (sc->flags & (SC_FL_SHUT_DONE|SC_FL_SHUT_WANTED))) {
|
||||
/* there was an error or the message was truncated */
|
||||
appctx->st0 = PEER_SESS_ST_END;
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user