]> granicus.if.org Git - pdns/commit
dnsdist: Lock the Lua context before executing a LuaAction
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 16 Feb 2016 08:44:51 +0000 (09:44 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 16 Feb 2016 08:44:51 +0000 (09:44 +0100)
commit01d9286fbe98fe6b37686681f580d7efa500a63a
tree5974f60cd2a67100945bf29ca9907d4fa1909e4f
parent75d70f69cc4c2b38cd4bac319e93b16e461aff8c
dnsdist: Lock the Lua context before executing a LuaAction

Otherwise the stack of the Lua context might get corrupted
whenever another Lua function (blockfilter, policy, maintenance or
another LuaAction) is simultaneously called from another thread.

We might be able to use a separate execution stack via
createThread()/lua_newthread(), but if I understand correctly how
it works, we would need to be sure that the Lua function called
does not access the global state at all, which is probably too
restrictive.

This should fix #3374, #3375, #3376, #3377, #3378, #3379, #3383,
and hopefully the random travis failures in our regression tests.
pdns/dnsdist-lua.cc