the scenario is Alice calls Bob and Alice hangs up before Bob answers the call, while using the default dialplan as <action application="bridge" data="user/${dialed_extension}@${domain_name}" /> Bob instantly goes hangup after Alice hung up, but after change the dialplan to have a lua script process the bridging, as <action application="lua" data="bridge.lua $1" /> // $1 is the destination_number Bob will still be ringing for quite a long time, the bridge.lua is simple: dest = argv[1] session:execute("set", "hangup_after_bridge=true"); dial_string = string.format('user/%s', dest) sessionB = freeswitch.Session(dial_string) if sessionB:ready() then freeswitch.bridge(session, sessionB); else freeswitch.consoleLog("info", "---session NOT ready \n ") -- ORININATOR_CANCEL can be checked here though omitted for simplicity session:hangup(); end why the bridge.lua is not able to respond to ORININATOR_CANCEL after Alice hangs up?