aboutsummaryrefslogtreecommitdiffstats
path: root/util/async.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2013-08-12 12:08:51 +0100
committerMatthew Wild <mwild1@gmail.com>2013-08-12 12:08:51 +0100
commit86a6492eb08c6990824d23d90a5675c8b3c76695 (patch)
tree16be476f3044414bc2d4f0f21eb49c37eb91cba7 /util/async.lua
parent7c85c2cd9caea9517ab19b53db50b5ba79daa713 (diff)
downloadprosody-86a6492eb08c6990824d23d90a5675c8b3c76695.tar.gz
prosody-86a6492eb08c6990824d23d90a5675c8b3c76695.zip
util.async: waiter: Remove restriction about wait() being called before done()
Diffstat (limited to 'util/async.lua')
-rw-r--r--util/async.lua9
1 files changed, 5 insertions, 4 deletions
diff --git a/util/async.lua b/util/async.lua
index afbaba5c..c81f8639 100644
--- a/util/async.lua
+++ b/util/async.lua
@@ -28,14 +28,15 @@ local function waiter(num)
error("Not running in an async context, see http://prosody.im/doc/developers/async");
end
num = num or 1;
+ local waiting;
return function ()
+ if num == 0 then return; end -- already done
+ waiting = true;
coroutine.yield("wait");
end, function ()
num = num - 1;
- if num == 0 then
- if not runner_continue(thread) then
- error("done() called without wait()!");
- end
+ if num == 0 and waiting then
+ runner_continue(thread);
end
end;
end