mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 07:37:02 +02:00
BUG/MINOR: h1-htx: Use default reason if not set when formatting the response
When the response status line is formatted before sending it to the client, if there is no reason set, HAProxy should add one that matches the status code, as stated in the configuration manual. However it is not performed. It is possible to hit this bug when the response comes from a H2 server, because there is no reason field in HTTP/2 and above. This patch should fix the issue #2798. It should be backported to all stable versions.
This commit is contained in:
parent
62f37801c8
commit
37487ada73
@ -991,6 +991,7 @@ int h1_format_htx_reqline(const struct htx_sl *sl, struct buffer *chk)
|
||||
int h1_format_htx_stline(const struct htx_sl *sl, struct buffer *chk)
|
||||
{
|
||||
size_t sz = chk->data;
|
||||
struct ist reason;
|
||||
|
||||
if (HTX_SL_LEN(sl) + 4 > b_room(chk))
|
||||
return 0;
|
||||
@ -1003,10 +1004,15 @@ int h1_format_htx_stline(const struct htx_sl *sl, struct buffer *chk)
|
||||
if (!chunk_memcat(chk, HTX_SL_RES_VPTR(sl), HTX_SL_RES_VLEN(sl)))
|
||||
goto full;
|
||||
}
|
||||
|
||||
reason = htx_sl_res_reason(sl);
|
||||
if (istlen(reason) == 0)
|
||||
reason = ist(http_get_reason(sl->info.res.status));
|
||||
|
||||
if (!chunk_memcat(chk, " ", 1) ||
|
||||
!chunk_memcat(chk, HTX_SL_RES_CPTR(sl), HTX_SL_RES_CLEN(sl)) ||
|
||||
!chunk_memcat(chk, " ", 1) ||
|
||||
!chunk_memcat(chk, HTX_SL_RES_RPTR(sl), HTX_SL_RES_RLEN(sl)) ||
|
||||
!chunk_memcat(chk, istptr(reason), istlen(reason)) ||
|
||||
!chunk_memcat(chk, "\r\n", 2))
|
||||
goto full;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user