]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: hlua: hook yield on known lua state
authorAurelien DARRAGON <adarragon@haproxy.com>
Fri, 7 Apr 2023 14:34:20 +0000 (16:34 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 19 Apr 2023 09:03:31 +0000 (11:03 +0200)
commitcf0f79249080e653fae4adeeee7d9aa681189140
treeda63b5a846d545a843589d7c5bb1ba0be1a3a3db
parent2a9764baae98a5f95ef08ea57129880ef223c268
MINOR: hlua: hook yield on known lua state

When forcing a yield attempt from hlua_hook(), we should perform it on
the known hlua state, not on a potential substate created using
coroutine.create() from an existing hlua state from lua script.

Indeed, only true hlua couroutines will properly handle the yield and
perform the required timeout checks when returning in hlua_ctx_resume().

So far, this was not a concern because hlua_gethlua() would return NULL
if hlua_hook() is not directly being called from a hlua coroutine anyway.

But with this we're trying to make hlua_hook() ready for being called
from a subcoroutine which inherits from a parent hlua ctx.
In this case, no yield attempt will be performed, we will simply check
for hlua timeouts.

Not doing so would result in the timeout checks not being performed since
hlua_ctx_resume() is completely bypassed when yielding from the subroutine,
resulting in a user-defined coroutine potentially going rogue unnoticed.
src/hlua.c