mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 07:24:32 +00:00
BUG/MEDIUM: checks: Don't attempt to receive data if we already subscribed.
tcpcheck_main() might be called while we already attempted to subscribe, and failed. There's no point in trying to call rcv_buf() again, and failing would lead to us trying to subscribe again, which is not allowed. This should be backported to 2.0 and 1.9.
This commit is contained in:
parent
8280ea97a0
commit
0ba6c85a0b
@ -3010,6 +3010,11 @@ static int tcpcheck_main(struct check *check)
|
|||||||
if (unlikely(check->result == CHK_RES_FAILED))
|
if (unlikely(check->result == CHK_RES_FAILED))
|
||||||
goto out_end_tcpcheck;
|
goto out_end_tcpcheck;
|
||||||
|
|
||||||
|
/* If we already subscribed, then we tried to received
|
||||||
|
* and failed, so there's no point trying again.
|
||||||
|
*/
|
||||||
|
if (check->wait_list.events & SUB_RETRY_RECV)
|
||||||
|
break;
|
||||||
if (cs->conn->mux->rcv_buf(cs, &check->bi, b_size(&check->bi), 0) <= 0) {
|
if (cs->conn->mux->rcv_buf(cs, &check->bi, b_size(&check->bi), 0) <= 0) {
|
||||||
if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH) || cs->flags & CS_FL_ERROR) {
|
if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH) || cs->flags & CS_FL_ERROR) {
|
||||||
done = 1;
|
done = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user