<div dir="ltr">Hi,<div><br></div><div>using the pbx_lua module for almost everything we have found a little annoying "bug". On Asterisk startup the module is loaded - however the configuration (extensions.lua) is not loaded and therefore the lua-defined dialplan is not available. By applying "module reload pbx_lua" the dialplan is loaded as expected (lua dialplan is correct).</div>

<div><br></div><div><br></div><div>------<br></div><div>How to reproduce the problem.<br></div><div><br></div><div>Details: Asterisk 11.7 running on Ubuntu 14.04</div><div><br></div><div>- Module is loaded on start</div>
<div>
# asterisk -fvvv<br></div><div>..SNIP<br></div><div><div> [1;30m    --  [0mRegistered extension context 'default'; registrar: pbx_lua</div><div> [1;30m    --  [0mIncluding switch 'Lua/' in context 'default'</div>

<div> [1;30m    --  [0mRegistered extension context 'parkedcalls'; registrar: features</div><div> [1;30m    --  [0mmerging incls/swits/igpats from old(parkedcalls) to new(parkedcalls) context, registrar = pbx_lua</div>

<div> [1;30m    --  [0mAdded extension '700' priority 1 to parkedcalls</div><div> [1;30m    --  [0mTime to scan old dialplan and merge leftovers back into the new: 0.000043 sec</div><div> [1;30m    --  [0mTime to restore hints and swap in new dialplan: 0.000003 sec</div>

<div> [1;30m    --  [0mTime to delete the old dialplan: 0.000005 sec</div><div> [1;30m    --  [0mTotal time merge_contexts_delete: 0.000051 sec</div><div> [1;30m  [0mpbx_lua.so => ( [0;33mLua PBX Switch [0m)</div></div>

<div>..SNIP</div><div><br></div><div>- Module is really loaded and thus fails:</div><div>#asterisk -rc "module load pbx_lua" </div><div><br></div><div>- Let the started Asterisk reload pbx_lua</div><div># sudo asterisk -rxvvvvv<br>

</div><div>> module reload pbx_lua.so</div><div><div>    -- Reloading module 'pbx_lua.so' (Lua PBX Switch)</div><div>    -- Registered extension context 'default'; registrar: pbx_lua</div><div>    -- Including switch 'Lua/' in context 'default'</div>

<div>    -- Registered extension context 'parkedcalls'; registrar: features</div><div>    -- merging incls/swits/igpats from old(parkedcalls) to new(parkedcalls) context, registrar = pbx_lua</div><div>    -- Added extension '700' priority 1 to parkedcalls</div>

<div>    -- Registered extension context 'ael-builtin-h-bubble'; registrar: pbx_ael</div><div>    -- merging incls/swits/igpats from old(ael-builtin-h-bubble) to new(ael-builtin-h-bubble) context, registrar = pbx_lua</div>

<div>    -- Added extension 'h' priority 9996 to ael-builtin-h-bubble</div><div>    -- Added extension 'h' priority 9995 to ael-builtin-h-bubble</div><div>    -- Added extension 'h' priority 9994 to ael-builtin-h-bubble</div>

<div>    -- Added extension 'h' priority 9993 to ael-builtin-h-bubble</div><div>    -- Added extension 'h' priority 9992 to ael-builtin-h-bubble</div><div>    -- Added extension 'h' priority 9991 to ael-builtin-h-bubble</div>

<div>    -- Added extension 'h' priority 1 to ael-builtin-h-bubble</div><div>    -- Registered extension context 'ael-default'; registrar: pbx_ael</div><div>    -- merging incls/swits/igpats from old(ael-default) to new(ael-default) context, registrar = pbx_lua</div>

<div>    -- Including context 'ael-demo' in context 'ael-default'</div><div>    -- Registered extension context 'ael-demo'; registrar: pbx_ael</div><div>    -- merging incls/swits/igpats from old(ael-demo) to new(ael-demo) context, registrar = pbx_lua</div>

</div><div>...SNIP</div><div><br></div><div><br></div><div>----</div><div>Investigation:</div><div><br></div><div>I took a look into pbx/pbx_lua.c and actually "load" identical to reload + registering the module at Asterisk. Looks neat.</div>

<div><div><br></div><div>static int reload(void)</div><div>{</div><div><span class="" style="white-space:pre">  </span>return load_or_reload_lua_stuff();</div><div>}</div><div><br></div><div>static int load_module(void)</div>

<div>{</div><div><span class="" style="white-space:pre">    </span>int res;</div><div><br></div><div><span class="" style="white-space:pre">  </span>if ((res = load_or_reload_lua_stuff()))</div><div><span class="" style="white-space:pre">            </span>return res;</div>

<div><br></div><div><span class="" style="white-space:pre">   </span>if (ast_register_switch(&lua_switch)) {</div><div><span class="" style="white-space:pre">                </span>ast_log(LOG_ERROR, "Unable to register LUA PBX switch\n");</div>

<div><span class="" style="white-space:pre">            </span>return AST_MODULE_LOAD_DECLINE;</div><div><span class="" style="white-space:pre">    </span>}</div><div><br></div><div><span class="" style="white-space:pre"> </span>return AST_MODULE_LOAD_SUCCESS;</div>

<div>}</div></div><div><br></div><div>----</div><div><br></div><div>Could it be that the pbx_lua is loaded to early and the dialplan overwritten by some other dialplan-module that is later loaded?</div><div><br></div><div>

PS: Work done together with Frank Haase.</div><div><br></div><div><div><span style="font-size:10pt;font-family:Arial,sans-serif" lang="DE">Kind regards<br><br>Dennis Guse<br></span><span style="font-size:10pt;font-family:Arial,sans-serif"><br>

Quality and Usability Lab<br>Telekom Innovation Laboratories<br>TU Berlin<br>Ernst-Reuter-Platz 7<br>D-10587 Berlin, Germany<br>Tel: <a value="+4930835358874">+49 30 8353 58874</a><br>Fax: <a value="+4930835358409">+49 30 8353 58409</a><br>

E-mail: <a href="mailto:dennis.guse@telekom.de" target="_blank"><span style="color:blue">dennis.guse@telekom.de</span></a><br>Web: <a href="http://www.qu.tlabs.tu-berlin.de/" target="_blank"><span style="color:blue">www.qu.tlabs.tu-berlin.de</span></a></span></div>


</div></div>