mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MINOR: htx: Add functions to get the first block of an HTX message
It is the first block relatively to the start-line. So it is the start-line if its position is set (sl_pos != -1), otherwise it is the head. The functions htx_get_first() and htx_get_first_blk() can be used to get it. This change is mandatory to consider 1xx informational messages as part of a response.
This commit is contained in:
parent
9c66b980fa
commit
a3ad6b1b8f
@ -410,6 +410,41 @@ static inline enum htx_blk_type htx_get_tail_type(const struct htx *htx)
|
|||||||
return (blk ? htx_get_blk_type(blk) : HTX_BLK_UNUSED);
|
return (blk ? htx_get_blk_type(blk) : HTX_BLK_UNUSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Returns the position of the first block in the HTX message <htx>. It is the
|
||||||
|
* sl_pos if set, otherwise it is the head.
|
||||||
|
*
|
||||||
|
* An signed 32-bits integer is returned to handle -1 case. Blocks position are
|
||||||
|
* store on unsigned 32-bits integer, but it is impossible to have so much
|
||||||
|
* blocks to overflow a 32-bits signed integer !
|
||||||
|
*/
|
||||||
|
static inline int32_t htx_get_first(const struct htx *htx)
|
||||||
|
{
|
||||||
|
if (htx->sl_pos != -1)
|
||||||
|
return htx->sl_pos;
|
||||||
|
return htx->head;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the first HTX block in the HTX message <htx>. If <blk> is the head,
|
||||||
|
* NULL returned.
|
||||||
|
*/
|
||||||
|
static inline struct htx_blk *htx_get_first_blk(const struct htx *htx)
|
||||||
|
{
|
||||||
|
int32_t pos;
|
||||||
|
|
||||||
|
pos = htx_get_first(htx);
|
||||||
|
return ((pos == -1) ? NULL : htx_get_blk(htx, pos));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the type of the first block in the HTX message <htx>. If unset or if
|
||||||
|
* <htx> is empty, HTX_BLK_UNUSED is returned.
|
||||||
|
*/
|
||||||
|
static inline enum htx_blk_type htx_get_first_type(const struct htx *htx)
|
||||||
|
{
|
||||||
|
struct htx_blk *blk = htx_get_first_blk(htx);
|
||||||
|
|
||||||
|
return (blk ? htx_get_blk_type(blk) : HTX_BLK_UNUSED);
|
||||||
|
}
|
||||||
|
|
||||||
/* Returns the position of block immediately before the one pointed by <pos>. If
|
/* Returns the position of block immediately before the one pointed by <pos>. If
|
||||||
* the message is empty or if <pos> is the position of the head, -1 returned.
|
* the message is empty or if <pos> is the position of the head, -1 returned.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user