# HG changeset patch # User Matthew Wild # Date 1642179318 0 # Node ID e77c938ed92bae4d2b88621ea1d04becf322afb8 # Parent 53e0ae7709171d087c45dcde29413b00302c152f mod_storage_xep0227: Skip self-contacts on roster import diff -r 53e0ae770917 -r e77c938ed92b plugins/mod_storage_xep0227.lua --- 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