local type = type;
local calculate_hash = require "util.caps".calculate_hash;
local core_post_stanza = prosody.core_post_stanza;
+local bare_sessions = prosody.bare_sessions;
-- Used as canonical 'empty table'
local NULL = {};
local t = stanza.attr.type;
local self = not stanza.attr.to;
+ -- Only cache subscriptions if user is online
+ if not bare_sessions[user] then return; end
+
if not t then -- available presence
if self or subscription_presence(user, stanza.attr.from) then
local recipient = stanza.attr.from;
end
end
end);
+
+module:hook("resource-unbind", function (event)
+ local user_bare_jid = event.session.username.."@"..event.session.host;
+ if not bare_sessions[user_bare_jid] then -- User went offline
+ -- We don't need this info cached anymore, clear it.
+ recipients[user_bare_jid] = nil;
+ end
+end);