X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=prosody;h=47998583168463b238f6998e038f3a544e18c99b;hb=71f987d510a0cc942ae4f8de272e93ba871d28ad;hp=8fcee8e840e45f795f9bd64ed0a22861352c7df4;hpb=ad00f8769f2110e42bb7a7ce83b952abddc0aa19;p=prosody.git diff --git a/prosody b/prosody index 8fcee8e8..47998583 100755 --- a/prosody +++ b/prosody @@ -121,6 +121,7 @@ end function load_libraries() -- Load socket framework + socket = require "socket"; server = require "net.server" end @@ -151,9 +152,12 @@ function sandbox_require() -- for neat sandboxing of modules local _realG = _G; local _real_require = require; - if not getfenv then + local getfenv = getfenv or function (f) -- FIXME: This is a hack to replace getfenv() in Lua 5.2 - function getfenv(f) return debug.getupvalue(debug.getinfo(f or 1).func, 1); end + local name, env = debug.getupvalue(debug.getinfo(f or 1).func, 1); + if name == "_ENV" then + return env; + end end function require(...) local curr_env = getfenv(2); @@ -289,6 +293,7 @@ function load_secondary_libraries() require "util.import" require "util.xmppstream" require "core.stanza_router" + require "core.statsmanager" require "core.hostmanager" require "core.portmanager" require "core.modulemanager" @@ -367,8 +372,10 @@ function loop() prosody.events.fire_event("very-bad-error", {error = err, traceback = traceback}); end + local sleep = require"socket".sleep; + while select(2, xpcall(server.loop, catch_uncaught_error)) ~= "quitting" do - socket.sleep(0.2); + sleep(0.2); end end