# HG changeset patch # User Nicholas George # Date 1751906356 18000 # Node ID 9dcdb56f75dd87b5606546ad38dc813edcb3cad3 # Parent 3f75ac4311bf4dd049c562c9dcd99696eb8bc889 mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname) diff -r 3f75ac4311bf -r 9dcdb56f75dd mod_http_presence/mod_http_presence.lua --- a/mod_http_presence/mod_http_presence.lua Mon Jul 07 16:22:19 2025 +0200 +++ b/mod_http_presence/mod_http_presence.lua Mon Jul 07 11:39:16 2025 -0500 @@ -88,23 +88,21 @@ return nil; end - local nickname; - if nick_item and nick_item.tags and nick_item.tags[1] and nick_item.tags[1].tags and nick_item.tags[1].tags[2] then - - local nick_element = nick_item.tags[1].tags[2]; -- element - if nick_element.name == "nickname" and nick_element.tags[1] and nick_element.tags[2][1] then - nickname = nick_element.tags[2][1]; -- Text content: "Wongo" - module:log("debug", "Nickname found for JID %s: %s", bare_jid, nickname); - else - module:log("debug", "No element in vCard4 for JID %s", bare_jid); - return nil; + if nick_item and nick_item.tags and nick_item.tags[1] and nick_item.tags[1].tags then + for _, tag in ipairs(nick_item.tags[1].tags) do + if tag.name == "nickname" and tag.tags and tag.tags[1] and tag.tags[1][1] then + nickname = tag.tags[1][1]; + module:log("debug", "Nickname found for JID %s: %s", bare_jid, nickname); + return nickname; + end end else module:log("debug", "Invalid vCard4 item structure for JID %s", bare_jid); return nil; end - return nickname or jid.node(bare_jid); + module:log("debug", "No element in vCard4 for JID %s", bare_jid); + return jid.node(bare_jid); end function get_muc_avatar(bare_jid)