diff options
author | Kim Alvefur <zash@zash.se> | 2015-04-03 06:38:22 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2015-04-03 06:38:22 +0200 |
commit | ea346342bd8e8677c0a5f36828fb2dfa812a0a89 (patch) | |
tree | 8a900a61e238f2b5322212f10401172cb4d37b40 /plugins/mod_roster.lua | |
parent | c481f0d96bebdf814576fb6d23bcc47fbbc5250c (diff) | |
download | prosody-ea346342bd8e8677c0a5f36828fb2dfa812a0a89.tar.gz prosody-ea346342bd8e8677c0a5f36828fb2dfa812a0a89.zip |
rostermanager, mod_roster, mod_presence: Move pending roster items to roster metadata field
Diffstat (limited to 'plugins/mod_roster.lua')
-rw-r--r-- | plugins/mod_roster.lua | 12 |
1 files changed, 5 insertions, 7 deletions
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 |