mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-23 14:51:27 +02:00
MINOR: vars: add a VF_CREATEONLY flag for creation
Passing this flag to var_set() will result in the variable to only be created if it did not exist, otherwise nothing is done (it's not even updated). This will be used for pre-registering names.
This commit is contained in:
parent
7978c5c422
commit
4994b57728
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
/* flags used when setting/clearing variables */
|
/* flags used when setting/clearing variables */
|
||||||
#define VF_UPDATEONLY 0x00000001 // SCOPE_PROC variables are only updated
|
#define VF_UPDATEONLY 0x00000001 // SCOPE_PROC variables are only updated
|
||||||
|
#define VF_CREATEONLY 0x00000002 // do nothing if the variable already exists
|
||||||
|
|
||||||
enum vars_scope {
|
enum vars_scope {
|
||||||
SCOPE_SESS = 0,
|
SCOPE_SESS = 0,
|
||||||
|
@ -356,6 +356,7 @@ static int smp_fetch_var(const struct arg *args, struct sample *smp, const char
|
|||||||
* Flags is a bitfield that may contain one of the following flags:
|
* Flags is a bitfield that may contain one of the following flags:
|
||||||
* - VF_UPDATEONLY: if the scope is SCOPE_PROC, the variable may only be
|
* - VF_UPDATEONLY: if the scope is SCOPE_PROC, the variable may only be
|
||||||
* updated but not created.
|
* updated but not created.
|
||||||
|
* - VF_CREATEONLY: do nothing if the variable already exists (success).
|
||||||
*
|
*
|
||||||
* It returns 0 on failure, non-zero on success.
|
* It returns 0 on failure, non-zero on success.
|
||||||
*/
|
*/
|
||||||
@ -375,6 +376,11 @@ static int var_set(const char *name, enum vars_scope scope, struct sample *smp,
|
|||||||
var = var_get(vars, name);
|
var = var_get(vars, name);
|
||||||
|
|
||||||
if (var) {
|
if (var) {
|
||||||
|
if (flags & VF_CREATEONLY) {
|
||||||
|
ret = 1;
|
||||||
|
goto unlock;
|
||||||
|
}
|
||||||
|
|
||||||
/* free its used memory. */
|
/* free its used memory. */
|
||||||
if (var->data.type == SMP_T_STR ||
|
if (var->data.type == SMP_T_STR ||
|
||||||
var->data.type == SMP_T_BIN) {
|
var->data.type == SMP_T_BIN) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user