aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2015-04-03 06:38:22 +0200
committerKim Alvefur <zash@zash.se>2015-04-03 06:38:22 +0200
commit28c58565ace33870970010c9d195c5da5d9cf4d1 (patch)
tree8a900a61e238f2b5322212f10401172cb4d37b40 /plugins
parent90aa3a710b37162abe64ad36a0af03cb29da5822 (diff)
downloadprosody-28c58565ace33870970010c9d195c5da5d9cf4d1.tar.gz
prosody-28c58565ace33870970010c9d195c5da5d9cf4d1.zip
rostermanager, mod_roster, mod_presence: Move pending roster items to roster metadata field
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_presence.lua6
-rw-r--r--plugins/mod_roster.lua12
2 files changed, 7 insertions, 11 deletions
diff --git a/plugins/mod_presence.lua b/plugins/mod_presence.lua
index 9e8f37db..ab57a158 100644
--- a/plugins/mod_presence.lua
+++ b/plugins/mod_presence.lua
@@ -106,10 +106,8 @@ function handle_normal_presence(origin, stanza)
res.presence.attr.to = nil;
end
end
- if roster.pending then -- resend incoming subscription requests
- for jid in pairs(roster.pending) do
- origin.send(st.presence({type="subscribe", from=jid})); -- TODO add to attribute? Use original?
- end
+ for jid in pairs(roster[false].pending) do -- resend incoming subscription requests
+ origin.send(st.presence({type="subscribe", from=jid})); -- TODO add to attribute? Use original?
end
local request = st.presence({type="subscribe", from=origin.username.."@"..origin.host});
for jid, item in pairs(roster) do -- resend outgoing subscription requests
diff --git a/plugins/mod_roster.lua b/plugins/mod_roster.lua
index 56af5368..a674740c 100644
--- a/plugins/mod_roster.lua
+++ b/plugins/mod_roster.lua
@@ -44,7 +44,7 @@ module:hook("iq/self/jabber:iq:roster:query", function(event)
roster:query("jabber:iq:roster");
-- Client does not support versioning, or has stale roster
for jid, item in pairs(session.roster) do
- if jid ~= "pending" and jid then
+ if jid then
roster:tag("item", {
jid = jid,
subscription = item.subscription,
@@ -64,9 +64,7 @@ module:hook("iq/self/jabber:iq:roster:query", function(event)
else -- stanza.attr.type == "set"
local query = stanza.tags[1];
if #query.tags == 1 and query.tags[1].name == "item"
- and query.tags[1].attr.xmlns == "jabber:iq:roster" and query.tags[1].attr.jid
- -- Protection against overwriting roster.pending, until we move it
- and query.tags[1].attr.jid ~= "pending" then
+ and query.tags[1].attr.xmlns == "jabber:iq:roster" and query.tags[1].attr.jid then
local item = query.tags[1];
local from_node, from_host = jid_split(stanza.attr.from);
local jid = jid_prep(item.attr.jid);
@@ -78,7 +76,7 @@ module:hook("iq/self/jabber:iq:roster:query", function(event)
local r_item = roster[jid];
if r_item then
local to_bare = node and (node.."@"..host) or host; -- bare JID
- if r_item.subscription == "both" or r_item.subscription == "from" or (roster.pending and roster.pending[jid]) then
+ if r_item.subscription == "both" or r_item.subscription == "from" or roster[false].pending[jid] then
core_post_stanza(session, st.presence({type="unsubscribed", from=session.full_jid, to=to_bare}));
end
if r_item.subscription == "both" or r_item.subscription == "to" or r_item.ask then
@@ -144,8 +142,8 @@ module:hook_global("user-deleted", function(event)
local bare = username .. "@" .. host;
local roster = rm_load_roster(username, host);
for jid, item in pairs(roster) do
- if jid and jid ~= "pending" then
- if item.subscription == "both" or item.subscription == "from" or (roster.pending and roster.pending[jid]) then
+ if jid then
+ if item.subscription == "both" or item.subscription == "from" or roster[false].pending[jid] then
module:send(st.presence({type="unsubscribed", from=bare, to=jid}));
end
if item.subscription == "both" or item.subscription == "to" or item.ask then