BUG/MEDIUM: htx: Adjust length to add DATA block in an empty HTX buffer
htx_add_data() is able to partially consume data. However there is a bug when the HTX buffer is empty. The data length is not properly adjusted. Thus, if it exceeds the HTX buffer size, no block is added. To fix the issue, the length is now adjusted first. This patch must be backported as far as 2.0.
This commit is contained in:
parent
b80b20c6ff
commit
28e7ba8688
|
@ -939,9 +939,6 @@ size_t htx_add_data(struct htx *htx, const struct ist data)
|
||||||
uint32_t sz, room;
|
uint32_t sz, room;
|
||||||
int32_t len = data.len;
|
int32_t len = data.len;
|
||||||
|
|
||||||
if (htx->head == -1)
|
|
||||||
goto add_new_block;
|
|
||||||
|
|
||||||
/* Not enough space to store data */
|
/* Not enough space to store data */
|
||||||
if (len > htx_free_data_space(htx))
|
if (len > htx_free_data_space(htx))
|
||||||
len = htx_free_data_space(htx);
|
len = htx_free_data_space(htx);
|
||||||
|
@ -949,6 +946,9 @@ size_t htx_add_data(struct htx *htx, const struct ist data)
|
||||||
if (!len)
|
if (!len)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (htx->head == -1)
|
||||||
|
goto add_new_block;
|
||||||
|
|
||||||
/* get the tail and head block */
|
/* get the tail and head block */
|
||||||
tailblk = htx_get_tail_blk(htx);
|
tailblk = htx_get_tail_blk(htx);
|
||||||
if (tailblk == NULL)
|
if (tailblk == NULL)
|
||||||
|
|
Loading…
Reference in New Issue