From 5085bc3103e5a52f0d8909d13a6e36d24d2a6562 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Thu, 17 Feb 2022 12:52:09 +0100 Subject: [PATCH] BUG/MINOR: httpclient: reinit flags in httpclient_start() When starting for the 2nd time a request from the same httpclient *hc context, the flags are not reinitialized and the httpclient will stop after the first call to the IO handler, because the END flag is always present. This patch also add a test before httpclient_start() to ensure we don't start a client already started. Must be backported in 2.5. --- src/http_client.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/http_client.c b/src/http_client.c index dacc326be..c8576e764 100644 --- a/src/http_client.c +++ b/src/http_client.c @@ -423,6 +423,13 @@ struct appctx *httpclient_start(struct httpclient *hc) int len; struct split_url out; + /* if the client was started and not ended, an applet is already + * running, we shouldn't try anything */ + if (httpclient_started(hc) && !httpclient_ended(hc)) + return NULL; + + hc->flags = 0; + /* parse URI and fill sockaddr_storage */ /* FIXME: use a resolver */ len = url2sa(istptr(hc->req.url), istlen(hc->req.url), &hc->dst, &out);