Comparison

plugins/mod_pubsub/pubsub.lib.lua @ 11882:c3bd71227e17

mod_pubsub: Return proper errors for disco queries on nodes Previously this would return item-not-found, even when you could see the node in disco#items.
author Kim Alvefur <zash@zash.se>
date Mon, 01 Nov 2021 17:59:46 +0100
parent 11855:8890eaa69446
child 11904:313d01cc4258
comparison
equal deleted inserted replaced
11881:2138fc13d53a 11882:c3bd71227e17
278 function _M.handle_disco_info_node(event, service) 278 function _M.handle_disco_info_node(event, service)
279 local stanza, reply, node = event.stanza, event.reply, event.node; 279 local stanza, reply, node = event.stanza, event.reply, event.node;
280 local ok, ret = service:get_nodes(stanza.attr.from); 280 local ok, ret = service:get_nodes(stanza.attr.from);
281 local node_obj = ret[node]; 281 local node_obj = ret[node];
282 if not ok or not node_obj then 282 if not ok or not node_obj then
283 return; 283 event.origin.send(pubsub_error_reply(stanza, ret or "item-not-found"));
284 return true;
284 end 285 end
285 event.exists = true; 286 event.exists = true;
286 reply:tag("identity", { category = "pubsub", type = "leaf" }):up(); 287 reply:tag("identity", { category = "pubsub", type = "leaf" }):up();
287 if node_obj.config then 288 if node_obj.config then
288 reply:add_child(node_metadata_form:form({ 289 reply:add_child(node_metadata_form:form({
297 298
298 function _M.handle_disco_items_node(event, service) 299 function _M.handle_disco_items_node(event, service)
299 local stanza, reply, node = event.stanza, event.reply, event.node; 300 local stanza, reply, node = event.stanza, event.reply, event.node;
300 local ok, ret = service:get_items(node, stanza.attr.from); 301 local ok, ret = service:get_items(node, stanza.attr.from);
301 if not ok then 302 if not ok then
302 return; 303 event.origin.send(pubsub_error_reply(stanza, ret));
304 return true;
303 end 305 end
304 306
305 for _, id in ipairs(ret) do 307 for _, id in ipairs(ret) do
306 reply:tag("item", { jid = module.host, name = id }):up(); 308 reply:tag("item", { jid = module.host, name = id }):up();
307 end 309 end