MEDIUM: httpclient: add a Content-Length when the payload is known

This introduce a change of behavior in the httpclient API. When
generating a request with a payload buffer, the size of the buffer
payload is known and does not need to be streamed in chunks.

This patch force to sends payload buffer using a Content-Length header
in the request, however the behavior does not change if a callback is
still used instead of a buffer.
This commit is contained in:
William Lallemand 2025-07-04 09:05:21 +02:00
parent 5da4da0bb6
commit f07f0ee21c

View File

@ -136,13 +136,20 @@ int httpclient_req_gen(struct httpclient *hc, const struct ist url, enum http_me
goto error;
}
if (isttest(payload) && istlen(payload)) {
/* add the Content-Length of the payload when not using the callback */
if (!htx_add_header(htx, ist("Content-Length"), ist(ultoa(istlen(payload)))))
goto error;
}
if (!htx_add_endof(htx, HTX_BLK_EOH))
goto error;
if (isttest(payload) && istlen(payload)) {
/* add the payload if it can feat in the buffer, no need to set
* the Content-Length, the data will be sent chunked */
/* add the payload if it can feat in the buffer, Content-Length was added before */
if (!htx_add_data_atonce(htx, payload))
goto error;
}