mirror of
http://git.haproxy.org/git/haproxy.git
synced 2026-02-11 22:52:40 +02:00
MINOR: map: mapfile ordering also matters for tree-based match types
Willy made me realize that tree-based matching may also suffer from
out-of-order mapfile loading, as opposed to what's being said in
b546bb6d ("BUG/MINOR: map: list-based matching potential ordering
regression") and the associated REGTEST.
Indeed, in case of duplicated keys, we want to be sure that only the key
that was first seen in the file will be returned (as long as it is not
removed). The above fix is still valid, and the list-based match regtest
will also prevent regressions for tree-based match since mapfile loading
logic is currently match-type agnostic.
But let's clarify that by making both the code comment and the regtest
more precise.
This commit is contained in:
@@ -2512,7 +2512,10 @@ int pattern_read_from_file(struct pattern_head *head, unsigned int refflags,
|
||||
|
||||
/* Load reference content in the pattern expression.
|
||||
* We need to load elements in the same order they were seen in the
|
||||
* file as list-based matching types may rely on it.
|
||||
* file. Indeed, some list-based matching types may rely on it as the
|
||||
* list is positional, and for tree-based matching, even if the tree is
|
||||
* content-based in case of duplicated keys we only want the first key
|
||||
* in the file to be considered.
|
||||
*/
|
||||
list_for_each_entry(elt, &ref->head, list) {
|
||||
if (!pat_ref_push(elt, expr, patflags, err)) {
|
||||
|
||||
Reference in New Issue
Block a user