Software / code / prosody-modules
Changeset
6332:9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
| author | Nicholas George <wirlaburla@worlio.com> |
|---|---|
| date | Mon, 07 Jul 2025 11:39:16 -0500 |
| parents | 6331:3f75ac4311bf |
| children | 6333:dbbbd5caf292 |
| files | mod_http_presence/mod_http_presence.lua |
| diffstat | 1 files changed, 9 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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]; -- <nickname> 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 <nickname> 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 <nickname> element in vCard4 for JID %s", bare_jid); + return jid.node(bare_jid); end function get_muc_avatar(bare_jid)