Changeset

11904:313d01cc4258

mod_pubsub: Fix traceback in disco of non-existent node (thanks Martin) In this case `ret` is a table not containing the node, which makes pubsub_error_reply() try to get an error template with that `ret` table as index, which returns a `nil` then passed to table.unpack, which in turn throws the error.
author Kim Alvefur <zash@zash.se>
date Sat, 13 Nov 2021 22:12:39 +0100
parents 11903:baf69f254753
children 11905:bbfa707a4756
files plugins/mod_pubsub/pubsub.lib.lua
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_pubsub/pubsub.lib.lua	Sat Nov 13 13:32:43 2021 +0100
+++ b/plugins/mod_pubsub/pubsub.lib.lua	Sat Nov 13 22:12:39 2021 +0100
@@ -278,9 +278,13 @@
 function _M.handle_disco_info_node(event, service)
 	local stanza, reply, node = event.stanza, event.reply, event.node;
 	local ok, ret = service:get_nodes(stanza.attr.from);
+	if not ok then
+		event.origin.send(pubsub_error_reply(stanza, ret));
+		return true;
+	end
 	local node_obj = ret[node];
-	if not ok or not node_obj then
-		event.origin.send(pubsub_error_reply(stanza, ret or "item-not-found"));
+	if not node_obj then
+		event.origin.send(pubsub_error_reply(stanza, "item-not-found"));
 		return true;
 	end
 	event.exists = true;