mod_bookmarks: Fix traceback on attempt to convert invalid bookmark
Found by accidentally publishing {urn:xmpp:bookmarks:0}conference
instead of :1 due to testing this earlier for the blocking.
By the principle of garbage in, garbage out, just generate a bookmark
from the item id / JID and carry on with a warning.
--- a/plugins/mod_bookmarks.lua Mon Jan 10 22:15:55 2022 +0100
+++ b/plugins/mod_bookmarks.lua Tue Jan 11 00:06:48 2022 +0100
@@ -41,16 +41,21 @@
for _, item_id in ipairs(items) do
local item = items[item_id];
local bookmark = item:get_child("conference", namespace);
+ if not bookmark then
+ module:log("warn", "Invalid bookmark published: expected {%s}conference, got {%s}%s", namespace,
+
+ item.tags[1] and item.tags[1].attr.xmlns, item.tags[1] and item.tags[1].name);
+ end
local conference = st.stanza("conference", {
jid = item.attr.id,
- name = bookmark.attr.name,
- autojoin = bookmark.attr.autojoin,
+ name = bookmark and bookmark.attr.name,
+ autojoin = bookmark and bookmark.attr.autojoin,
});
- local nick = bookmark:get_child_text("nick");
+ local nick = bookmark and bookmark:get_child_text("nick");
if nick ~= nil then
conference:text_tag("nick", nick):up();
end
- local password = bookmark:get_child_text("password");
+ local password = bookmark and bookmark:get_child_text("password");
if password ~= nil then
conference:text_tag("password", password):up();
end