mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-18 03:26:55 +00:00
BUG/MINOR: tcpcheck: Properly detect pending HTTP data in output buffer
In tcpcheck_eval_send(), the condition to detect there are still pending data in the output buffer is buggy. Presence of raw data must be tested for TCP connection only. But a condition on the connection was missing to be sure it is not an HTX connection. This patch must be backported as far as 2.2.
This commit is contained in:
parent
8c29fa7454
commit
47bfd7b9b7
@ -1304,7 +1304,7 @@ enum tcpcheck_eval_ret tcpcheck_eval_send(struct check *check, struct tcpcheck_r
|
||||
}
|
||||
|
||||
/* Data already pending in the output buffer, send them now */
|
||||
if (b_data(&check->bo)) {
|
||||
if ((IS_HTX_CONN(conn) && !htx_is_empty(htxbuf(&check->bo))) || (!IS_HTX_CONN(conn) && b_data(&check->bo))) {
|
||||
TRACE_DEVEL("Data still pending, try to send it now", CHK_EV_TCPCHK_SND|CHK_EV_TX_DATA, check);
|
||||
goto do_send;
|
||||
}
|
||||
@ -1448,7 +1448,7 @@ enum tcpcheck_eval_ret tcpcheck_eval_send(struct check *check, struct tcpcheck_r
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
if ((IS_HTX_CONN(conn) && !htx_is_empty(htxbuf(&check->bo))) || b_data(&check->bo)) {
|
||||
if ((IS_HTX_CONN(conn) && !htx_is_empty(htxbuf(&check->bo))) || (!IS_HTX_CONN(conn) && b_data(&check->bo))) {
|
||||
cs->conn->mux->subscribe(cs, SUB_RETRY_SEND, &check->wait_list);
|
||||
ret = TCPCHK_EVAL_WAIT;
|
||||
TRACE_DEVEL("data not fully sent, wait", CHK_EV_TCPCHK_SND|CHK_EV_TX_DATA, check);
|
||||
|
Loading…
Reference in New Issue
Block a user