Mercurial > prosody-hg
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 |
| parents | 8890eaa69446 |
| children | 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 |
