mod_mix_pam: Remove tracking of bound resources
This commit is contained in:
parent
2c89d00c09
commit
482890a9a1
@ -255,35 +255,6 @@ module:hook("iq/bare", function(event)
|
||||
end
|
||||
end);
|
||||
|
||||
local user_resources = {}; -- [bare jid] -> array of bound resources
|
||||
|
||||
module:hook("resource-bind", function(event)
|
||||
local session_jid, resource = jid.bare(event.session.full_jid), event.session.resource;
|
||||
if user_resources[session_jid] ~= nil then
|
||||
for _, r in pairs(user_resources) do
|
||||
if r == resource then return; end
|
||||
end
|
||||
|
||||
table.insert(user_resources[session_jid], resource);
|
||||
else
|
||||
user_resources[session_jid] = { resource };
|
||||
end
|
||||
|
||||
module:log("debug", "Caught resource %s of %s", resource, session_jid);
|
||||
end);
|
||||
|
||||
module:hook("resource-unbind", function(event)
|
||||
local session_jid, resource = jid.bare(event.session.full_jid), event.session.resource;
|
||||
for i, r in pairs(user_resources[session_jid]) do
|
||||
if r == resource then
|
||||
table.remove(user_resources[session_jid], i);
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
module:log("debug", "Unbind of not recorded resource %s (%s)", resource, session_jid);
|
||||
end);
|
||||
|
||||
module:hook("roster-get", function(event)
|
||||
-- NOTE: Currently this requires a patch to make mod_roster emit
|
||||
-- the roster-get event
|
||||
@ -321,19 +292,12 @@ module:hook("message/bare", function(event)
|
||||
if not is_mix_host(jid_host) then return; end
|
||||
if not is_mix_message(stanza) then return; end
|
||||
|
||||
-- MIX-CORE says that if the message cannot be delivered, it should
|
||||
-- just be dropped
|
||||
if user_resources[stanza.attr.to] == nil then
|
||||
module:log("debug", "Skipping %s: No resource bound", stanza.attr.to);
|
||||
return true;
|
||||
end
|
||||
|
||||
-- Per XEP we know that stanza.attr.to is the user's bare JID
|
||||
for _, resource in pairs(user_resources[stanza.attr.to]) do
|
||||
for _, session in pairs(prosody.bare_sessions[stanza.attr.to].sessions) do
|
||||
-- TODO: Only send to resources that advertise support for MIX (When MIX clients are available for testing)
|
||||
local msg = st.clone(stanza);
|
||||
msg.attr.to = stanza.attr.to.."/"..resource;
|
||||
module:send(msg);
|
||||
msg.attr.to = stanza.attr.to.."/"..session.resource;
|
||||
session:send(msg);
|
||||
module:log("debug", "Sent message to %s", msg.attr.to);
|
||||
end
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user