aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2018-03-17 11:46:21 +0000
committerMatthew Wild <mwild1@gmail.com>2018-03-17 11:46:21 +0000
commit18c5a6ca6b9d567a12a68f97b309621a44f2c7a2 (patch)
treed5492ff59ad9cb58aa5386f964977649014b12b9
parentd1f58d3084a719a0af82cf5b7f3b10b3a69512c2 (diff)
downloadprosody-18c5a6ca6b9d567a12a68f97b309621a44f2c7a2.tar.gz
prosody-18c5a6ca6b9d567a12a68f97b309621a44f2c7a2.zip
util.async: Convert asserts to a return false (same as other unexpected behaviour)
-rw-r--r--util/async.lua6
1 files changed, 4 insertions, 2 deletions
diff --git a/util/async.lua b/util/async.lua
index 205db183..0dde1f32 100644
--- a/util/async.lua
+++ b/util/async.lua
@@ -24,8 +24,10 @@ local function runner_continue(thread)
-- Find the 'level' of the top-most function (0 == current level, 1 == caller, ...)
while debug.getinfo(thread, level, "") do level = level + 1; end
ok, runner = debug.getlocal(thread, level-1, 1);
- assert(ok == "self", "unexpected async state: variable mismatch");
- assert(runner.thread == thread, "unexpected async state: thread mismatch");
+ if ok ~= "self" or runner.thread ~= thread then
+ log("warn", "unexpected async state: unable to locate runner during error handling, got %s", ok);
+ return false;
+ end
local error_handler = runner.watchers.error;
if error_handler then error_handler(runner, debug.traceback(thread, err)); end
local ready_handler = runner.watchers.ready;