mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 07:07:04 +02:00
BUG/MINOR: http-client: Ignore 1XX interim responses in non-HTX mode
When the response is re-formatted in raw message, the 1XX interim responses must be skipped. Otherwise, information of the first interim response will be saved (status line and headers) and those from the final response will be dropped. Note that for now, in HTX-mode, the interim messages are removed. This patch must be backported as far as 2.6.
This commit is contained in:
parent
4bdb2e5a26
commit
9d10be33ae
@ -648,6 +648,23 @@ void httpclient_applet_io_handler(struct appctx *appctx)
|
||||
if (!sl || (!(sl->flags & HTX_SL_F_IS_RESP)))
|
||||
goto out;
|
||||
|
||||
/* Skipp any 1XX interim responses */
|
||||
if (sl->info.res.status < 200 &&
|
||||
(sl->info.res.status == 100 || sl->info.res.status >= 102)) {
|
||||
while (blk) {
|
||||
enum htx_blk_type type = htx_get_blk_type(blk);
|
||||
uint32_t sz = htx_get_blksz(blk);
|
||||
|
||||
c_rew(res, sz);
|
||||
blk = htx_remove_blk(htx, blk);
|
||||
if (type == HTX_BLK_EOH) {
|
||||
htx_to_buf(htx, &res->buf);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* copy the status line in the httpclient */
|
||||
hc->res.status = sl->info.res.status;
|
||||
hc->res.vsn = istdup(htx_sl_res_vsn(sl));
|
||||
|
Loading…
Reference in New Issue
Block a user