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)