Software /
code /
prosody
Changeset
12183:e77c938ed92b
mod_storage_xep0227: Skip self-contacts on roster import
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 14 Jan 2022 16:55:18 +0000 |
parents | 12180:53e0ae770917 |
children | 12184:326f5466ddc7 |
files | plugins/mod_storage_xep0227.lua |
diffstat | 1 files changed, 15 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_storage_xep0227.lua Mon Jan 10 18:23:54 2022 +0100 +++ b/plugins/mod_storage_xep0227.lua Fri Jan 14 16:55:18 2022 +0000 @@ -238,6 +238,7 @@ local xml = self:_get_user_xml(user, self.host); local usere = xml and getUserElement(xml); if usere then + local user_jid = jid.join(usere.name, self.host); usere:remove_children("query", "jabber:iq:roster"); usere:maptags(function (tag) if tag.attr.xmlns == "jabber:client" and tag.name == "presence" and tag.attr.type == "subscribe" then @@ -248,18 +249,21 @@ if data and next(data) ~= nil then local roster = st.stanza("query", {xmlns='jabber:iq:roster'}); usere:add_child(roster); - for jid, item in pairs(data) do - if jid then - roster:tag("item", { - jid = jid, - subscription = item.subscription, - ask = item.ask, - name = item.name, - }); - for group in pairs(item.groups) do - roster:tag("group"):text(group):up(); + for contact_jid, item in pairs(data) do + contact_jid = jid.bare(jid.prep(contact_jid)); + if contact_jid ~= false then + if contact_jid ~= user_jid then -- Skip self-contacts + roster:tag("item", { + jid = contact_jid, + subscription = item.subscription, + ask = item.ask, + name = item.name, + }); + for group in pairs(item.groups) do + roster:tag("group"):text(group):up(); + end + roster:up(); -- move out from item end - roster:up(); -- move out from item else roster.attr.version = item.version; for pending_jid in pairs(item.pending) do