mod_storage_xep0227: treat roster metadata pseudo-entry correctly
The roster version is stored in a pseudo-item which has the key `false`.
The if condition in the touched code attempts to guard against this, but
it does not take into account that the jid prepping returns nil instead
of false.
By moving the jid prepping into the if, we can check for the metadata
entry safely.
-- 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 };