mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-29 22:11:18 +01:00
MEDIUM: lua: Add support for the Lua 5.4
On Lua 5.4, some API changes make HAProxy compilation to fail. Among other things, the lua_resume() function has changed and now takes an extra argument in Lua 5.4 and the error LUA_ERRGCMM was removed. Thus the LUA_VERSION_NUM macro is now tested to know the lua version is used and adapt the code accordingly. Here are listed the incompatibilities with the previous Lua versions : http://www.lua.org/manual/5.4/manual.html#8 This patch comes from the HAproxy's fedora RPM, committed by Tom Callaway : https://src.fedoraproject.org/rpms/haproxy/blob/db970613/f/haproxy-2.2.0-lua-5.4.patch This patch should fix the issue #730. It must be backported to 2.2 and probably as far as 2.0.
This commit is contained in:
parent
90ff590962
commit
08ed98fd79
@ -1069,6 +1069,9 @@ void hlua_hook(lua_State *L, lua_Debug *ar)
|
||||
*/
|
||||
static enum hlua_exec hlua_ctx_resume(struct hlua *lua, int yield_allowed)
|
||||
{
|
||||
#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 504
|
||||
int nres;
|
||||
#endif
|
||||
int ret;
|
||||
const char *msg;
|
||||
const char *trace;
|
||||
@ -1100,7 +1103,11 @@ resume_execution:
|
||||
lua->wake_time = TICK_ETERNITY;
|
||||
|
||||
/* Call the function. */
|
||||
#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 504
|
||||
ret = lua_resume(lua->T, gL.T, lua->nargs, &nres);
|
||||
#else
|
||||
ret = lua_resume(lua->T, gL.T, lua->nargs);
|
||||
#endif
|
||||
switch (ret) {
|
||||
|
||||
case LUA_OK:
|
||||
@ -7845,10 +7852,12 @@ static int hlua_load(char **args, int section_type, struct proxy *curpx,
|
||||
memprintf(err, "Lua message handler error: %s\n", lua_tostring(gL.T, -1));
|
||||
lua_pop(gL.T, 1);
|
||||
return -1;
|
||||
#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM <= 503
|
||||
case LUA_ERRGCMM:
|
||||
memprintf(err, "Lua garbage collector error: %s\n", lua_tostring(gL.T, -1));
|
||||
lua_pop(gL.T, 1);
|
||||
return -1;
|
||||
#endif
|
||||
default:
|
||||
memprintf(err, "Lua unknown error: %s\n", lua_tostring(gL.T, -1));
|
||||
lua_pop(gL.T, 1);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user