BUG/MINOR: hlua: improper lock usage in hlua_filter_new()

In hlua_filter_new(), after each hlua resume, we systematically try to
empty the stack by calling lua_settop(). However we're doing this without
locking the lua context, so it is unsafe in multithreading context if the
script is loaded using 'lua-load'. To fix the issue, we protect the call
with hlua_{lock,unlock}() helpers.

This should be backported up to 2.6.
This commit is contained in:
Aurelien DARRAGON 2024-03-04 11:25:47 +01:00
parent 51f291c795
commit d81c2205a3

View File

@ -11956,8 +11956,11 @@ static int hlua_filter_new(struct stream *s, struct filter *filter)
}
end:
if (s->hlua)
if (s->hlua) {
hlua_lock(s->hlua);
lua_settop(s->hlua->T, 0);
hlua_unlock(s->hlua);
}
if (ret <= 0) {
if (flt_ctx) {
hlua_ctx_destroy(flt_ctx->hlua[0]);