From: Christopher Faulet Date: Tue, 22 Jul 2025 06:16:14 +0000 (+0200) Subject: MINOR: http-client: Try to send request body with headers if possible X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a5b907372d04b018c2897d4b6937939d7897d11f;p=thirdparty%2Fhaproxy.git MINOR: http-client: Try to send request body with headers if possible There is no reason to yield after sending the request headers, except if the request was fully sent. If there is a payload, it is better to send it as well. However, when the whole request was sent, we can leave the I/O handler. --- diff --git a/src/http_client.c b/src/http_client.c index 474093389..b881383e7 100644 --- a/src/http_client.c +++ b/src/http_client.c @@ -564,13 +564,12 @@ void httpclient_applet_io_handler(struct appctx *appctx) if (htx->flags & HTX_FL_EOM) { /* check if a body need to be added */ appctx->st0 = HTTPCLIENT_S_RES_STLINE; se_fl_set(appctx->sedesc, SE_FL_EOI); - break; + goto out; /* we need to leave the IO handler once we wrote the request */ } applet_have_more_data(appctx); appctx->st0 = HTTPCLIENT_S_REQ_BODY; - goto out; /* we need to leave the IO handler once we wrote the request */ - break; + __fallthrough; case HTTPCLIENT_S_REQ_BODY: /* call the payload callback */ @@ -637,11 +636,11 @@ void httpclient_applet_io_handler(struct appctx *appctx) if (htx->flags & HTX_FL_EOM) { appctx->st0 = HTTPCLIENT_S_RES_STLINE; se_fl_set(appctx->sedesc, SE_FL_EOI); - break; + goto out; /* we need to leave the IO handler once we wrote the request */ } applet_have_more_data(appctx); - goto process_data; /* we need to leave the IO handler once we wrote the request */ + goto process_data; case HTTPCLIENT_S_RES_STLINE: /* in HTX mode, don't try to copy the stline