From 2ce0db4e4bb28837562e6915b1feb0ba46484bb1 Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Wed, 20 Nov 2024 16:07:44 +0100 Subject: [PATCH] OPTION: map/hlua: make core.set_map() lookup more efficient 0844bed7d3 ("MEDIUM: map/acl: Improve pat_ref_set() efficiency (for "set-map", "add-acl" action perfs)") improved lookup efficiency for set-map http action, but the core.set_map() lua method which is built on the same construct was overlooked. Let's also benefit from this optim as it easily applies. --- src/hlua.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hlua.c b/src/hlua.c index cd2b908d7..10f702798 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -2279,6 +2279,7 @@ static int hlua_set_map(lua_State *L) const char *key; const char *value; struct pat_ref *ref; + struct pat_ref_elt *elt; MAY_LJMP(check_args(L, 3, "set_map")); @@ -2291,8 +2292,9 @@ static int hlua_set_map(lua_State *L) WILL_LJMP(luaL_error(L, "'set_map': unknown map file '%s'", name)); HA_RWLOCK_WRLOCK(PATREF_LOCK, &ref->lock); - if (pat_ref_find_elt(ref, key) != NULL) - pat_ref_set(ref, key, value, NULL, NULL); + elt = pat_ref_find_elt(ref, key); + if (elt) + pat_ref_set(ref, key, value, NULL, elt); else pat_ref_add(ref, key, value, NULL); HA_RWLOCK_WRUNLOCK(PATREF_LOCK, &ref->lock);