From: Peter Wu Date: Sun, 30 Aug 2015 20:30:32 +0000 (+0200) Subject: Restore LUA dialplan ACTIONS functionality X-Git-Tag: v1.4.22~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=02cc5bcd14d1c08e41189081050c66eeef2f0c2c;p=thirdparty%2Ffreeswitch.git Restore LUA dialplan ACTIONS functionality Since using SWIG 2.0 to generate the code, two new items have been pushed on the stack. Use relative stack indices to avoid breakage. FS-8099 #resolve --- diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp index bb835b09e0..433b6e3e8f 100644 --- a/src/mod/languages/mod_lua/mod_lua.cpp +++ b/src/mod/languages/mod_lua/mod_lua.cpp @@ -591,7 +591,7 @@ SWITCH_STANDARD_DIALPLAN(lua_dialplan_hunt) /* expecting ACTIONS = { {"app1", "app_data1"}, { "app2" }, "app3" } -- each of three is valid */ lua_getglobal(L, "ACTIONS"); - if (!lua_istable(L, 1)) { + if (!lua_istable(L, -1)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Global variable ACTIONS may only be a table\n"); goto done; @@ -599,7 +599,7 @@ SWITCH_STANDARD_DIALPLAN(lua_dialplan_hunt) lua_pushnil(L); /* STACK = tab | nil */ - while (lua_next(L, 1) != 0) { /* STACK = tab | k1 .. kn | vn */ + while (lua_next(L, -2) != 0) { /* STACK = tab | k1 .. kn | vn */ char *application = NULL, *app_data = NULL; if (lua_isstring(L, -1)) {