Hello, i'm trying to exit my lua script (called from dialplan) to exit in the the hanguphook: function on_hangup(s,status) freeswitch.consoleLog("NOTICE","---- on_hangup: "..status.."\n"); error(); end freeswitch.consoleLog("NOTICE","---- ANSWER:\n"); session:answer(); freeswitch.consoleLog("NOTICE","---- SETHOOK: \n"); session:setHangupHook("on_hangup"); while (session:ready() == true) do freeswitch.consoleLog("NOTICE","---- START OF LOOP \n"); freeswitch.consoleLog("NOTICE","---- STREAMFILE \n"); session:streamFile("/usr/local/freeswitch/sounds/en/us/callie/ivr/8000/ivr-on_hold_indefinitely.wav"); freeswitch.consoleLog("NOTICE","---- END OF SCRIPT 1 -> HANGUP\n"); end freeswitch.consoleLog("NOTICE","---- END OF SCRIPT 2 -> HANGUP\n"); session:hangup() When I hangup during the streamFile Call, I geht the following output: 2012-01-25 12:10:19.936097 [NOTICE] switch_channel.c:930 New Channel sofia/internal/2001@192.168.20.73 [2b1cd9f6-4745-11e1-8c71-0d2938abf0b5] 2012-01-25 12:10:19.936097 [INFO] mod_dialplan_xml.c:481 Processing B#-FS-2001 <2001>->3001 in context default 2012-01-25 12:10:19.936097 [NOTICE] switch_cpp.cpp:1227 ---- ANSWER: 2012-01-25 12:10:19.936097 [NOTICE] switch_cpp.cpp:599 Channel [sofia/internal/2001@192.168.20.73] has been answered 2012-01-25 12:10:19.936097 [NOTICE] switch_cpp.cpp:1227 ---- SETHOOK: 2012-01-25 12:10:19.936097 [NOTICE] switch_cpp.cpp:1227 ---- START OF LOOP 2012-01-25 12:10:19.936097 [NOTICE] switch_cpp.cpp:1227 ---- STREAMFILE 2012-01-25 12:10:21.116050 [NOTICE] sofia.c:624 Hangup sofia/internal/2001@192.168.20.73 [CS_EXECUTE] [NORMAL_CLEARING] 2012-01-25 12:10:21.116050 [NOTICE] switch_cpp.cpp:1227 ---- on_hangup: hangup 2012-01-25 12:10:21.116050 [NOTICE] switch_cpp.cpp:1227 ---- END OF SCRIPT 1 -> HANGUP 2012-01-25 12:10:21.116050 [NOTICE] switch_cpp.cpp:1227 ---- END OF SCRIPT 2 -> HANGUP 2012-01-25 12:10:21.116050 [NOTICE] switch_core_session.c:1398 Session 2 (sofia/internal/2001@192.168.20.73) Ended 2012-01-25 12:10:21.116050 [NOTICE] switch_core_session.c:1400 Close Channel sofia/internal/2001@192.168.20.73 [CS_DESTROY] Why does the hangup handler return and the rest of the script is executed ? I event tried "do return end;" , "exit;" ," exit();" instead of "error(); - none of them works. If i put the same logic into javascript, the hook works and the script is terminated: function on_hangup(s,status) { console_log("NOTICE","---- hangup "+status+"\n"); return "exit"; } console_log("NOTICE","---- ANSWER\n"); session.answer(); console_log("NOTICE","---- ANSWER\n"); session.setHangupHook(on_hangup); while(session.ready()) { console_log("NOTICE","---- START OF LOOP\n"); session.streamFile("/usr/local/freeswitch/sounds/en/us/callie/ivr/8000/ivr-on_hold_indefinitely.wav"); console_log("NOTICE","---- END OF LOOP\n"); } console_log("NOTICE","---- END OF SCRIPT\n"); session.hangup(); 2012-01-25 12:13:08.396041 [NOTICE] switch_channel.c:930 New Channel sofia/internal/2001@192.168.20.73 [8f85a15c-4745-11e1-8c76-0d2938abf0b5] 2012-01-25 12:13:08.396041 [INFO] mod_dialplan_xml.c:481 Processing B#-FS-2001 <2001>->3002 in context default 2012-01-25 12:13:08.396041 [NOTICE] hangup.js:1 ---- ANSWER 2012-01-25 12:13:08.396041 [NOTICE] mod_spidermonkey.c:2068 Channel [sofia/internal/2001@192.168.20.73] has been answered 2012-01-25 12:13:08.396041 [NOTICE] hangup.js:1 ---- ANSWER 2012-01-25 12:13:08.396041 [NOTICE] hangup.js:1 ---- START OF LOOP 2012-01-25 12:13:09.875996 [NOTICE] sofia.c:624 Hangup sofia/internal/2001@192.168.20.73 [CS_EXECUTE] [NORMAL_CLEARING] 2012-01-25 12:13:09.875996 [NOTICE] hangup.js:2 ---- hangup hangup 2012-01-25 12:13:09.875996 [NOTICE] switch_core_session.c:1398 Session 3 (sofia/internal/2001@192.168.20.73) Ended 2012-01-25 12:13:09.875996 [NOTICE] switch_core_session.c:1400 Close Channel sofia/internal/2001@192.168.20.73 [CS_DESTROY] Any suggestions ? Or do i miss something here ? The dialplan part: <extension name="hanguptest"> <condition field="destination_number" expression="^(3001)$"> <action application="set" data="session_in_hangup_hook=true"/> <action application="lua" data="hangup.lua"/> </condition> </extension> (replace hangup.lua with hangup.js for the javascript version) Freeswitch Version: FreeSWITCH Version 1.0.head (git-9be51d5 2012-01-21 13-45-21 -0500) thx®ards, gw