mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MINOR: samples: add a function to fetch and convert any sample to a string
Any sample type can now easily be converted to a string that can be used anywhere. This will be used for logging and passing information in headers.
This commit is contained in:
parent
d167e6d9fb
commit
e7ad4bb2f0
@ -34,6 +34,8 @@ struct sample_expr *sample_parse_expr(char **str, int *idx, char *err, int err_s
|
||||
struct sample *sample_process(struct proxy *px, struct session *l4,
|
||||
void *l7, unsigned int dir, struct sample_expr *expr,
|
||||
struct sample *p);
|
||||
struct sample *sample_fetch_string(struct proxy *px, struct session *l4, void *l7,
|
||||
unsigned int opt, struct sample_expr *expr);
|
||||
void sample_register_fetches(struct sample_fetch_kw_list *psl);
|
||||
void sample_register_convs(struct sample_conv_kw_list *psl);
|
||||
struct chunk *sample_get_trash_chunk(void);
|
||||
|
25
src/sample.c
25
src/sample.c
@ -539,6 +539,31 @@ struct sample *sample_process(struct proxy *px, struct session *l4, void *l7,
|
||||
return p;
|
||||
}
|
||||
|
||||
/*
|
||||
* Process a fetch + format conversion as defined by the sample expression <expr>
|
||||
* on request or response considering the <opt> parameter. The output is always of
|
||||
* type string. Returns either NULL if no sample could be extracted, or a pointer
|
||||
* to the converted result stored in static temp_smp in format string.
|
||||
*/
|
||||
struct sample *sample_fetch_string(struct proxy *px, struct session *l4, void *l7,
|
||||
unsigned int opt, struct sample_expr *expr)
|
||||
{
|
||||
struct sample *smp;
|
||||
|
||||
smp = sample_process(px, l4, l7, opt, expr, NULL);
|
||||
if (!smp)
|
||||
return NULL;
|
||||
|
||||
if (!sample_casts[smp->type][SMP_T_CSTR])
|
||||
return NULL;
|
||||
|
||||
if (!sample_casts[smp->type][SMP_T_CSTR](smp))
|
||||
return NULL;
|
||||
|
||||
smp->type = SMP_T_CSTR;
|
||||
return smp;
|
||||
}
|
||||
|
||||
/*****************************************************************/
|
||||
/* Sample format convert functions */
|
||||
/* These functions set the data type on return. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user