Lua Dialplan Application to turn down FS
Hi, I'm using the following Lua-Script to check whether a conference exists and only let a caller join if so. The script is called via the following dialplan /<action application="lua" data="/path/to/script.lua $1" />///, where $1 is the destination number. 1. -- Connect to a database 2. local dbh = freeswitch.Dbh("pgsql://hostaddr=127.0.0.1 dbname=database user=username password='password' application_name='my-lua-script'") 3. assert(dbh:connected()); 4. -- Execute SQL 5. dbh:query(string.format("SELECT COUNT(*) as \"MyCount\" FROM \"MyTable\" WHERE ColA = '%s'", argv[1]), function(row) 6. --freeswitch.consoleLog("INFO", "Results: " .. row.MyCount) 7. 8. dbh:release() 9. 10. if (row.MyCount== '1') then 11. freeswitch.consoleLog("INFO", "User is joining conference at " .. argv[1]) 12. 13. session:answer() 14. session:execute("conference", argv[1] .. "@wideband") 15. end 16. session:hangup() 17. end) Line 8 instructs FS to return the postgres-Connection back to the pool - which is as expected. When a user now leaves the conference, FS throws this errors: 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:694 CoreSession::hangup 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:368 An error occurred trying to consume input for query (200): connection pointer is NULL 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:122 No DB Connection 2014-10-12 10:32:30.065924 [ERR] switch_core_sqldb.c:1177 ERR: [SELECT COUNT(*) as "MyCount" FROM "MyTable" WHERE ColA = 'conf-1234'][connection pointer is NULL] 2014-10-12 10:32:30.065924 [ERR] freeswitch_lua.cpp:446 DBH NOT Connected. 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:1075 sofia/internal/Alice@my.pbx.com destroy/unlink session from object Now, I could live with that. BUT: The problem is, that sometimes, when a user leaves the conference, FS crashes. I've narrowed down the main cause to the above lua script. If I comment line 8 out, FS stops crashing. This will also stop FS from reusing Database-Connections. Now my questions: 1. I don't use `dbh` after line 8. So where does the error come from? 2. How can I stop the error? 3. How can I rewrite the lua script to have both a) non-crashing FS and b) reusing of connection? Regards, Bernhard
It looks like the parentheses don't match on line 5. John On 12/10/14 11:45, Bernhard Wendel wrote:
Hi,
I'm using the following Lua-Script to check whether a conference exists and only let a caller join if so. The script is called via the following dialplan /<action application="lua" data="/path/to/script.lua $1" />///, where $1 is the destination number.
1. -- Connect to a database 2. local dbh = freeswitch.Dbh("pgsql://hostaddr=127.0.0.1 dbname=database user=username password='password' application_name='my-lua-script'") 3. assert(dbh:connected()); 4. -- Execute SQL 5. dbh:query(string.format("SELECT COUNT(*) as \"MyCount\" FROM \"MyTable\" WHERE ColA = '%s'", argv[1]), function(row) 6. --freeswitch.consoleLog("INFO", "Results: " .. row.MyCount) 7. 8. dbh:release() 9. 10. if (row.MyCount== '1') then 11. freeswitch.consoleLog("INFO", "User is joining conference at " .. argv[1]) 12. 13. session:answer() 14. session:execute("conference", argv[1] .. "@wideband") 15. end 16. session:hangup() 17. end)
Line 8 instructs FS to return the postgres-Connection back to the pool - which is as expected. When a user now leaves the conference, FS throws this errors:
2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:694 CoreSession::hangup 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:368 An error occurred trying to consume input for query (200): connection pointer is NULL 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:122 No DB Connection 2014-10-12 10:32:30.065924 [ERR] switch_core_sqldb.c:1177 ERR: [SELECT COUNT(*) as "MyCount" FROM "MyTable" WHERE ColA = 'conf-1234'][connection pointer is NULL] 2014-10-12 10:32:30.065924 [ERR] freeswitch_lua.cpp:446 DBH NOT Connected. 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:1075 sofia/internal/Alice@my.pbx.com destroy/unlink session from object
Now, I could live with that. BUT: The problem is, that sometimes, when a user leaves the conference, FS crashes. I've narrowed down the main cause to the above lua script. If I comment line 8 out, FS stops crashing. This will also stop FS from reusing Database-Connections.
Now my questions:
1. I don't use `dbh` after line 8. So where does the error come from? 2. How can I stop the error? 3. How can I rewrite the lua script to have both a) non-crashing FS and b) reusing of connection?
Regards, Bernhard
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Hi John, what are you trying to tell me? Since I'm new to LUA you make me wonder whether there is a syntax error within my code. It should pop up somewhere, shouldn't it? Because I haven't found one and the code is actually working. Or am I missing something? Regards, Bernhard Am 12.10.2014 17:21, schrieb John:
It looks like the parentheses don't match on line 5.
John
On 12/10/14 11:45, Bernhard Wendel wrote:
Hi,
I'm using the following Lua-Script to check whether a conference exists and only let a caller join if so. The script is called via the following dialplan /<action application="lua" data="/path/to/script.lua $1" />///, where $1 is the destination number.
1. -- Connect to a database 2. local dbh = freeswitch.Dbh("pgsql://hostaddr=127.0.0.1 dbname=database user=username password='password' application_name='my-lua-script'") 3. assert(dbh:connected()); 4. -- Execute SQL 5. dbh:query(string.format("SELECT COUNT(*) as \"MyCount\" FROM \"MyTable\" WHERE ColA = '%s'", argv[1]), function(row) 6. --freeswitch.consoleLog("INFO", "Results: " .. row.MyCount) 7. 8. dbh:release() 9. 10. if (row.MyCount== '1') then 11. freeswitch.consoleLog("INFO", "User is joining conference at " .. argv[1]) 12. 13. session:answer() 14. session:execute("conference", argv[1] .. "@wideband") 15. end 16. session:hangup() 17. end)
Line 8 instructs FS to return the postgres-Connection back to the pool - which is as expected. When a user now leaves the conference, FS throws this errors:
2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:694 CoreSession::hangup 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:368 An error occurred trying to consume input for query (200): connection pointer is NULL 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:122 No DB Connection 2014-10-12 10:32:30.065924 [ERR] switch_core_sqldb.c:1177 ERR: [SELECT COUNT(*) as "MyCount" FROM "MyTable" WHERE ColA = 'conf-1234'][connection pointer is NULL] 2014-10-12 10:32:30.065924 [ERR] freeswitch_lua.cpp:446 DBH NOT Connected. 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:1075 sofia/internal/Alice@my.pbx.com destroy/unlink session from object
Now, I could live with that. BUT: The problem is, that sometimes, when a user leaves the conference, FS crashes. I've narrowed down the main cause to the above lua script. If I comment line 8 out, FS stops crashing. This will also stop FS from reusing Database-Connections.
Now my questions:
1. I don't use `dbh` after line 8. So where does the error come from? 2. How can I stop the error? 3. How can I rewrite the lua script to have both a) non-crashing FS and b) reusing of connection?
Regards, Bernhard
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Bernhard, On line 5, you have more '(' than ')'. They need to balance. John On 12/10/14 18:27, Bernhard Wendel wrote:
Hi John,
what are you trying to tell me? Since I'm new to LUA you make me wonder whether there is a syntax error within my code. It should pop up somewhere, shouldn't it? Because I haven't found one and the code is actually working.
Or am I missing something?
Regards, Bernhard
Am 12.10.2014 17:21, schrieb John:
It looks like the parentheses don't match on line 5.
John
On 12/10/14 11:45, Bernhard Wendel wrote:
Hi,
I'm using the following Lua-Script to check whether a conference exists and only let a caller join if so. The script is called via the following dialplan /<action application="lua" data="/path/to/script.lua $1" />///, where $1 is the destination number.
1. -- Connect to a database 2. local dbh = freeswitch.Dbh("pgsql://hostaddr=127.0.0.1 dbname=database user=username password='password' application_name='my-lua-script'") 3. assert(dbh:connected()); 4. -- Execute SQL 5. dbh:query(string.format("SELECT COUNT(*) as \"MyCount\" FROM \"MyTable\" WHERE ColA = '%s'", argv[1]), function(row) 6. --freeswitch.consoleLog("INFO", "Results: " .. row.MyCount) 7. 8. dbh:release() 9. 10. if (row.MyCount== '1') then 11. freeswitch.consoleLog("INFO", "User is joining conference at " .. argv[1]) 12. 13. session:answer() 14. session:execute("conference", argv[1] .. "@wideband") 15. end 16. session:hangup() 17. end)
Line 8 instructs FS to return the postgres-Connection back to the pool - which is as expected. When a user now leaves the conference, FS throws this errors:
2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:694 CoreSession::hangup 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:368 An error occurred trying to consume input for query (200): connection pointer is NULL 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:122 No DB Connection 2014-10-12 10:32:30.065924 [ERR] switch_core_sqldb.c:1177 ERR: [SELECT COUNT(*) as "MyCount" FROM "MyTable" WHERE ColA = 'conf-1234'][connection pointer is NULL] 2014-10-12 10:32:30.065924 [ERR] freeswitch_lua.cpp:446 DBH NOT Connected. 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:1075 sofia/internal/Alice@my.pbx.com destroy/unlink session from object
Now, I could live with that. BUT: The problem is, that sometimes, when a user leaves the conference, FS crashes. I've narrowed down the main cause to the above lua script. If I comment line 8 out, FS stops crashing. This will also stop FS from reusing Database-Connections.
Now my questions:
1. I don't use `dbh` after line 8. So where does the error come from? 2. How can I stop the error? 3. How can I rewrite the lua script to have both a) non-crashing FS and b) reusing of connection?
Regards, Bernhard
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
John, the matching parenthesis is found on line 17, there's nothing wrong with the syntax of this file. Bernhard, what i recommend is setup a separate extension that just does the conference logic for you, then in your lua code, instead of executing the "conference" stuff, simply transfer to your other XML extension that will put the call in a conference. In my experience, FreeSWITCH automatically releases db handlers when a script exits, and this works fairly well for me. So i would remove your dbh:release() code, use a transfer. also make sure to do session:setAutoHangup(false) before you transfer the call to your separate XML On Sun, Oct 12, 2014 at 1:25 PM, John <freeswitch@earthspike.net> wrote:
Bernhard,
On line 5, you have more '(' than ')'. They need to balance.
John
On 12/10/14 18:27, Bernhard Wendel wrote:
Hi John,
what are you trying to tell me? Since I'm new to LUA you make me wonder whether there is a syntax error within my code. It should pop up somewhere, shouldn't it? Because I haven't found one and the code is actually working.
Or am I missing something?
Regards, Bernhard
Am 12.10.2014 17:21, schrieb John:
It looks like the parentheses don't match on line 5.
John
On 12/10/14 11:45, Bernhard Wendel wrote:
Hi,
I'm using the following Lua-Script to check whether a conference exists and only let a caller join if so. The script is called via the following dialplan *<action application="lua" data="/path/to/script.lua $1" />* , where $1 is the destination number.
1. -- Connect to a database 2. local dbh = freeswitch.Dbh("pgsql://hostaddr=127.0.0.1 dbname=database user=username password='password' application_name='my-lua-script'") 3. assert(dbh:connected()); 4. -- Execute SQL 5. dbh:query(string.format("SELECT COUNT(*) as \"MyCount\" FROM \"MyTable\" WHERE ColA = '%s'", argv[1]), function(row) 6. --freeswitch.consoleLog("INFO", "Results: " .. row.MyCount) 7. 8. dbh:release() 9. 10. if (row.MyCount== '1') then 11. freeswitch.consoleLog("INFO", "User is joining conference at " .. argv[1]) 12. 13. session:answer() 14. session:execute("conference", argv[1] .. "@wideband") 15. end 16. session:hangup() 17. end)
Line 8 instructs FS to return the postgres-Connection back to the pool - which is as expected. When a user now leaves the conference, FS throws this errors:
2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:694 CoreSession::hangup 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:368 An error occurred trying to consume input for query (200): connection pointer is NULL 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:122 No DB Connection 2014-10-12 10:32:30.065924 [ERR] switch_core_sqldb.c:1177 ERR: [SELECT COUNT(*) as "MyCount" FROM "MyTable" WHERE ColA = 'conf-1234'][connection pointer is NULL] 2014-10-12 10:32:30.065924 [ERR] freeswitch_lua.cpp:446 DBH NOT Connected. 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:1075 sofia/internal/Alice@my.pbx.com destroy/unlink session from object
Now, I could live with that. BUT: The problem is, that sometimes, when a user leaves the conference, FS crashes. I've narrowed down the main cause to the above lua script. If I comment line 8 out, FS stops crashing. This will also stop FS from reusing Database-Connections.
Now my questions:
1. I don't use `dbh` after line 8. So where does the error come from? 2. How can I stop the error? 3. How can I rewrite the lua script to have both a) non-crashing FS and b) reusing of connection?
Regards, Bernhard
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.orghttp://www.freeswitchsolutions.com
Official FreeSWITCH Siteshttp://www.freeswitch.orghttp://confluence.freeswitch.orghttp://www.cluecon....
FreeSWITCH-powered IP PBX: The CudaTel Communication Serverhttp://www.cudatel.com
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.orghttp://www.freeswitchsolutions.com
Official FreeSWITCH Siteshttp://www.freeswitch.orghttp://confluence.freeswitch.orghttp://www.cluecon....
FreeSWITCH-powered IP PBX: The CudaTel Communication Serverhttp://www.cudatel.com
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.orghttp://www.freeswitchsolutions.com
Official FreeSWITCH Siteshttp://www.freeswitch.orghttp://confluence.freeswitch.orghttp://www.cluecon....
FreeSWITCH-powered IP PBX: The CudaTel Communication Serverhttp://www.cudatel.com
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Also, i would remove the session:hangup from the lua script, add an extra action to the extension that handles the check (your xml where you call luarun) and have the hangup there, that way if the lua script does not transfer the call, it will automatically hangup as a default action. On Sun, Oct 12, 2014 at 9:01 PM, Chris Tunbridge <blasterjr@gmail.com> wrote:
John, the matching parenthesis is found on line 17, there's nothing wrong with the syntax of this file.
Bernhard, what i recommend is setup a separate extension that just does the conference logic for you, then in your lua code, instead of executing the "conference" stuff, simply transfer to your other XML extension that will put the call in a conference. In my experience, FreeSWITCH automatically releases db handlers when a script exits, and this works fairly well for me.
So i would remove your dbh:release() code, use a transfer. also make sure to do
session:setAutoHangup(false)
before you transfer the call to your separate XML
On Sun, Oct 12, 2014 at 1:25 PM, John <freeswitch@earthspike.net> wrote:
Bernhard,
On line 5, you have more '(' than ')'. They need to balance.
John
On 12/10/14 18:27, Bernhard Wendel wrote:
Hi John,
what are you trying to tell me? Since I'm new to LUA you make me wonder whether there is a syntax error within my code. It should pop up somewhere, shouldn't it? Because I haven't found one and the code is actually working.
Or am I missing something?
Regards, Bernhard
Am 12.10.2014 17:21, schrieb John:
It looks like the parentheses don't match on line 5.
John
On 12/10/14 11:45, Bernhard Wendel wrote:
Hi,
I'm using the following Lua-Script to check whether a conference exists and only let a caller join if so. The script is called via the following dialplan *<action application="lua" data="/path/to/script.lua $1" />* , where $1 is the destination number.
1. -- Connect to a database 2. local dbh = freeswitch.Dbh("pgsql://hostaddr=127.0.0.1 dbname=database user=username password='password' application_name='my-lua-script'") 3. assert(dbh:connected()); 4. -- Execute SQL 5. dbh:query(string.format("SELECT COUNT(*) as \"MyCount\" FROM \"MyTable\" WHERE ColA = '%s'", argv[1]), function(row) 6. --freeswitch.consoleLog("INFO", "Results: " .. row.MyCount) 7. 8. dbh:release() 9. 10. if (row.MyCount== '1') then 11. freeswitch.consoleLog("INFO", "User is joining conference at " .. argv[1]) 12. 13. session:answer() 14. session:execute("conference", argv[1] .. "@wideband") 15. end 16. session:hangup() 17. end)
Line 8 instructs FS to return the postgres-Connection back to the pool - which is as expected. When a user now leaves the conference, FS throws this errors:
2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:694 CoreSession::hangup 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:368 An error occurred trying to consume input for query (200): connection pointer is NULL 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:122 No DB Connection 2014-10-12 10:32:30.065924 [ERR] switch_core_sqldb.c:1177 ERR: [SELECT COUNT(*) as "MyCount" FROM "MyTable" WHERE ColA = 'conf-1234'][connection pointer is NULL] 2014-10-12 10:32:30.065924 [ERR] freeswitch_lua.cpp:446 DBH NOT Connected. 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:1075 sofia/internal/Alice@my.pbx.com destroy/unlink session from object
Now, I could live with that. BUT: The problem is, that sometimes, when a user leaves the conference, FS crashes. I've narrowed down the main cause to the above lua script. If I comment line 8 out, FS stops crashing. This will also stop FS from reusing Database-Connections.
Now my questions:
1. I don't use `dbh` after line 8. So where does the error come from? 2. How can I stop the error? 3. How can I rewrite the lua script to have both a) non-crashing FS and b) reusing of connection?
Regards, Bernhard
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.orghttp://www.freeswitchsolutions.com
Official FreeSWITCH Siteshttp://www.freeswitch.orghttp://confluence.freeswitch.orghttp://www.cluecon....
FreeSWITCH-powered IP PBX: The CudaTel Communication Serverhttp://www.cudatel.com
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.orghttp://www.freeswitchsolutions.com
Official FreeSWITCH Siteshttp://www.freeswitch.orghttp://confluence.freeswitch.orghttp://www.cluecon....
FreeSWITCH-powered IP PBX: The CudaTel Communication Serverhttp://www.cudatel.com
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.orghttp://www.freeswitchsolutions.com
Official FreeSWITCH Siteshttp://www.freeswitch.orghttp://confluence.freeswitch.orghttp://www.cluecon....
FreeSWITCH-powered IP PBX: The CudaTel Communication Serverhttp://www.cudatel.com
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Hi Chris, sorry for the delay. Couldn't get to it sooner. Thanks for your input. It's working smoothly and as expected. Regards, Bernhard Am 13.10.2014 05:04, schrieb Chris Tunbridge:
Also, i would remove the session:hangup from the lua script, add an extra action to the extension that handles the check (your xml where you call luarun) and have the hangup there, that way if the lua script does not transfer the call, it will automatically hangup as a default action.
On Sun, Oct 12, 2014 at 9:01 PM, Chris Tunbridge <blasterjr@gmail.com <mailto:blasterjr@gmail.com>> wrote:
John, the matching parenthesis is found on line 17, there's nothing wrong with the syntax of this file.
Bernhard, what i recommend is setup a separate extension that just does the conference logic for you, then in your lua code, instead of executing the "conference" stuff, simply transfer to your other XML extension that will put the call in a conference. In my experience, FreeSWITCH automatically releases db handlers when a script exits, and this works fairly well for me.
So i would remove your dbh:release() code, use a transfer. also make sure to do
session:setAutoHangup(false)
before you transfer the call to your separate XML
On Sun, Oct 12, 2014 at 1:25 PM, John <freeswitch@earthspike.net <mailto:freeswitch@earthspike.net>> wrote:
Bernhard,
On line 5, you have more '(' than ')'. They need to balance.
John
On 12/10/14 18:27, Bernhard Wendel wrote:
Hi John,
what are you trying to tell me? Since I'm new to LUA you make me wonder whether there is a syntax error within my code. It should pop up somewhere, shouldn't it? Because I haven't found one and the code is actually working.
Or am I missing something?
Regards, Bernhard
Am 12.10.2014 17:21, schrieb John:
It looks like the parentheses don't match on line 5.
John
On 12/10/14 11:45, Bernhard Wendel wrote:
Hi,
I'm using the following Lua-Script to check whether a conference exists and only let a caller join if so. The script is called via the following dialplan /<action application="lua" data="/path/to/script.lua $1" />///, where $1 is the destination number.
1. -- Connect to a database 2. local dbh = freeswitch.Dbh("pgsql://hostaddr=127.0.0.1 dbname=database user=username password='password' application_name='my-lua-script'") 3. assert(dbh:connected()); 4. -- Execute SQL 5. dbh:query(string.format("SELECT COUNT(*) as \"MyCount\" FROM \"MyTable\" WHERE ColA = '%s'", argv[1]), function(row) 6. --freeswitch.consoleLog("INFO", "Results: " .. row.MyCount) 7. 8. dbh:release() 9. 10. if (row.MyCount== '1') then 11. freeswitch.consoleLog("INFO", "User is joining conference at " .. argv[1]) 12. 13. session:answer() 14. session:execute("conference", argv[1] .. "@wideband") 15. end 16. session:hangup() 17. end)
Line 8 instructs FS to return the postgres-Connection back to the pool - which is as expected. When a user now leaves the conference, FS throws this errors:
2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:694 CoreSession::hangup 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:368 An error occurred trying to consume input for query (200): connection pointer is NULL 2014-10-12 10:32:30.065924 [CRIT] switch_pgsql.c:122 No DB Connection 2014-10-12 10:32:30.065924 [ERR] switch_core_sqldb.c:1177 ERR: [SELECT COUNT(*) as "MyCount" FROM "MyTable" WHERE ColA = 'conf-1234'][connection pointer is NULL] 2014-10-12 10:32:30.065924 [ERR] freeswitch_lua.cpp:446 DBH NOT Connected. 2014-10-12 10:32:30.065924 [DEBUG] switch_cpp.cpp:1075 sofia/internal/Alice@my.pbx.com <mailto:sofia/internal/Alice@my.pbx.com> destroy/unlink session from object
Now, I could live with that. BUT: The problem is, that sometimes, when a user leaves the conference, FS crashes. I've narrowed down the main cause to the above lua script. If I comment line 8 out, FS stops crashing. This will also stop FS from reusing Database-Connections.
Now my questions:
1. I don't use `dbh` after line 8. So where does the error come from? 2. How can I stop the error? 3. How can I rewrite the lua script to have both a) non-crashing FS and b) reusing of connection?
Regards, Bernhard
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org <mailto:consulting@freeswitch.org> http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto:FreeSWITCH-users@lists.freeswitch.org> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org <mailto:consulting@freeswitch.org> http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto:FreeSWITCH-users@lists.freeswitch.org> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org <mailto:consulting@freeswitch.org> http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto:FreeSWITCH-users@lists.freeswitch.org> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org <mailto:consulting@freeswitch.org> http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto:FreeSWITCH-users@lists.freeswitch.org> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
participants (3)
-
Bernhard Wendel
-
Chris Tunbridge
-
John