From cad5f5e1ede350e92a0e0b1626d636f1c70c646d Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 9 Dec 2020 18:45:47 +0100 Subject: [PATCH] MINOR: tcpcheck: Only wait for more payload data on HTTP expect rules For HTTP expect rules, if the buffer is not empty, it is guarantee that all responses headers are received, with the start-line. Thus, except for payload matching, there is no reason to wait for more data from the moment the htx message is not empty. This patch may be backported as far as 2.2. --- src/tcpcheck.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/tcpcheck.c b/src/tcpcheck.c index 15d4a25..9d3b411 100644 --- a/src/tcpcheck.c +++ b/src/tcpcheck.c @@ -1754,6 +1754,14 @@ enum tcpcheck_eval_ret tcpcheck_eval_expect_http(struct check *check, struct tcp else match = regex_exec2(expect->regex, b_orig(&trash), b_data(&trash)); + /* Wait for more data on mismatch only if no minimum is defined (-1), + * otherwise the absence of match is already conclusive. + */ + if (!match && !last_read && (expect->min_recv == -1)) { + ret = TCPCHK_EVAL_WAIT; + goto out; + } + /* Set status and description in case of error */ status = ((status != HCHK_STATUS_UNKNOWN) ? status : HCHK_STATUS_L7RSP); if (LIST_ISEMPTY(&expect->onerror_fmt)) @@ -1769,14 +1777,6 @@ enum tcpcheck_eval_ret tcpcheck_eval_expect_http(struct check *check, struct tcp goto error; } - /* Wait for more data on mismatch only if no minimum is defined (-1), - * otherwise the absence of match is already conclusive. - */ - if (!match && !last_read && (expect->min_recv == -1)) { - ret = TCPCHK_EVAL_WAIT; - goto out; - } - if (!(match ^ inverse)) goto error; -- 1.7.10.4