mirror of
https://github.com/haproxy/haproxy.git
synced 2026-03-01 21:01:26 -05:00
BUG/MAJOR: thread/peers: fix deadlock on peers sync.
Table lock was not released on an error path (if there is no enough room to write table switch message). [wt: needs to be backported to 1.8]
This commit is contained in:
parent
0fed0b0a38
commit
088c9b73ca
1 changed files with 2 additions and 0 deletions
|
|
@ -1474,6 +1474,7 @@ incomplete:
|
|||
|
||||
msglen = peer_prepare_switchmsg(st, trash.str, trash.size);
|
||||
if (!msglen) {
|
||||
HA_SPIN_UNLOCK(STK_TABLE_LOCK, &st->table->lock);
|
||||
/* internal error: message does not fit in trash */
|
||||
appctx->st0 = PEER_SESS_ST_END;
|
||||
goto switchstate;
|
||||
|
|
@ -1482,6 +1483,7 @@ incomplete:
|
|||
/* message to buffer */
|
||||
repl = ci_putblk(si_ic(si), trash.str, msglen);
|
||||
if (repl <= 0) {
|
||||
HA_SPIN_UNLOCK(STK_TABLE_LOCK, &st->table->lock);
|
||||
/* no more write possible */
|
||||
if (repl == -1) {
|
||||
goto full;
|
||||
|
|
|
|||
Loading…
Reference in a new issue