File

util/envload.lua @ 12301:4f1fe6eb1ddb

mod_c2s,mod_s2s: Wait for sessions to close before proceeding with shutdown steps Ensures unavailable presence and other outgoing stanzas are sent. Waiting for c2s sessions to close first before proceeding to disable and close s2s ensures that unavailable presence can go out, even if it requires dialback to complete first.
author Kim Alvefur <zash@zash.se>
date Thu, 17 Feb 2022 03:49:47 +0100
parent 8416:bc9cb23b604a
child 12576:d1aacc6a81ac
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2011 Florian Zeitz
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
-- luacheck: ignore 113/setfenv 113/loadstring

local load, loadstring, setfenv = load, loadstring, setfenv;
local io_open = io.open;
local envload;
local envloadfile;

if setfenv then
	function envload(code, source, env)
		local f, err = loadstring(code, source);
		if f and env then setfenv(f, env); end
		return f, err;
	end

	function envloadfile(file, env)
		local fh, err, errno = io_open(file);
		if not fh then return fh, err, errno; end
		local f, err = load(function () return fh:read(2048); end, "@"..file);
		fh:close();
		if f and env then setfenv(f, env); end
		return f, err;
	end
else
	function envload(code, source, env)
		return load(code, source, nil, env);
	end

	function envloadfile(file, env)
		local fh, err, errno = io_open(file);
		if not fh then return fh, err, errno; end
		local f, err = load(fh:lines(2048), "@"..file, nil, env);
		fh:close();
		return f, err;
	end
end

return { envload = envload, envloadfile = envloadfile };