mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-24 12:20:59 +01:00
BUG/MINOR: pattern: pat_ref_set: return 0 if err was found
pat_ref_set_elt() returns 0, if we are run out of memory or can't parse a new
map value. Any arror message emitted by pat_ref_set_elt() is saved in err
buffer, if its provided by caller. These error messages are cumulated during
the loop.
pat_ref_set() is used to update values in map, referred to the same given key.
If during the update pat_ref_set_elt() fails, let's retun 0 to caller
immediately. We have the same non-unique key and the same new value in each
loop. So it seems quite odd to cumulate the same error messages and print it in
CLI:
> add map @1 mytest.map <<
+ 1.0.1.11 TestA
+ 1.0.1.11 TESTA
+ 1.0.1.11 test_a
+
> set map mytest.map 1.0.1.11 15
unable to parse '15' unable to parse '15' unable to parse '15'.
cli_parse_set_map(), which calls pat_ref_set() to update map, will return only
one error message with this patch:
> set map mytest.map 1.0.1.11 15
unable to parse '15'.
hlua_set_map() and http_action_set_map() don't provide error buffer and will
just exit on the first error.
This should be backported in all stable versions.
This commit is contained in:
parent
4f2493f355
commit
911f4d93d4
@ -1792,6 +1792,7 @@ int pat_ref_set(struct pat_ref *ref, const char *key, const char *value, char **
|
|||||||
if (!pat_ref_set_elt(ref, elt, value, &tmp_err)) {
|
if (!pat_ref_set_elt(ref, elt, value, &tmp_err)) {
|
||||||
memprintf(err, "%s, %s", err && *err ? *err : "", tmp_err);
|
memprintf(err, "%s, %s", err && *err ? *err : "", tmp_err);
|
||||||
ha_free(&tmp_err);
|
ha_free(&tmp_err);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user