From c2c3e171384aeefc87ca80649ceed7c36bc0cdb2 Mon Sep 17 00:00:00 2001 From: George Joseph Date: Wed, 18 Jun 2014 16:41:50 +0000 Subject: [PATCH] Update extensions.lua.sample with naming conflict guidance. The sample extensions.lua was causing pbx_lua to fail to load when parsing 'app.goto("default", "s", 1)' because in Lua 5.2, 'goto' is now a reserved word. This patch adds guidance to extensions.lua.sample and changed 'app.goto("default", "s", 1)' to 'app.['goto']("default", "s", 1)'. https://reviewboard.asterisk.org/r/3627/ ASTERISK-23844 #comment This commit fixes 1.8, patch for 11->trunk coming. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@416578 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- configs/extensions.lua.sample | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/configs/extensions.lua.sample b/configs/extensions.lua.sample index df32ec7059..d7be781b91 100644 --- a/configs/extensions.lua.sample +++ b/configs/extensions.lua.sample @@ -85,6 +85,7 @@ TRUNKMSD = 1 -- -- app.Dial("DAHDI/1") -- app.dial("DAHDI/1") +-- app["dial"]("DAHDI/1") -- -- More examples can be found below. -- @@ -95,6 +96,24 @@ TRUNKMSD = 1 -- autoservice_stop() and the autoservice_status() function will return true if -- an autoservice is currently running. -- +-- Note about naming conflicts: +-- Lua allows you to refer to table entries using the '.' notation, +-- I.E. app.goto(something), only if the entry doesn't conflict with an Lua +-- reserved word. In the 'goto' example, with Lua 5.1 or earlier, 'goto' is +-- not a reserved word so you'd be calling the Asterisk dialplan application +-- 'goto'. Lua 5.2 however, introduced the 'goto' control statement which +-- makes 'goto' a reserved word. This casues the interpreter to fail parsing +-- the file and pbx_lua.so will fail to load. The same applies to any use of +-- Lua tables including extensions, channels and any tables you create. +-- +-- There are two ways around this: Since Lua is case-sensitive, you can use +-- capitalized names, I.E. app.Goto(something) to refer to the Asterisk apps, +-- functions, etc. Or you can use the full syntax, I.E. app["goto"](something). +-- Both syntaxes are backwards compatible with earlier Lua versions. To make +-- your Lua dialplans easier to maintain and to reduce the chance of future +-- conflicts you may want to use the app["goto"](something) syntax for all +-- table accesses. +-- function outgoing_local(c, e) app.dial("DAHDI/1/" .. e, "", "") @@ -142,7 +161,8 @@ extensions = { end; ["1000"] = function() - app.goto("default", "s", 1) +-- See the naming conflict note above. + app['goto']("default", "s", 1) end; ["1234"] = function()