Mercurial > prosody-hg
comparison plugins/mod_admin_socket.lua @ 12887:68df46926c26 0.12
mod_admin_socket: Return error on unhandled input to prevent apparent freeze
When mod_admin_socket is loaded without mod_admin_shell, attempt to use
`prosodyctl shell` will appear to freeze after any input, since no
response is returned.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 16 Feb 2023 17:20:09 +0100 |
| parents | dd47adf74e93 |
| children | b8504b71735d |
comparison
equal
deleted
inserted
replaced
| 12885:3a6dae39c70e | 12887:68df46926c26 |
|---|---|
| 17 end | 17 end |
| 18 | 18 |
| 19 local server = require "net.server"; | 19 local server = require "net.server"; |
| 20 | 20 |
| 21 local adminstream = require "util.adminstream"; | 21 local adminstream = require "util.adminstream"; |
| 22 local st = require "util.stanza"; | |
| 22 | 23 |
| 23 local socket_path = module:get_option_path("admin_socket", "prosody.sock", "data"); | 24 local socket_path = module:get_option_path("admin_socket", "prosody.sock", "data"); |
| 24 | 25 |
| 25 local sessions = module:shared("sessions"); | 26 local sessions = module:shared("sessions"); |
| 26 | 27 |
| 33 event_name = "admin/"..stanza.attr.xmlns..":"..stanza.name; | 34 event_name = "admin/"..stanza.attr.xmlns..":"..stanza.name; |
| 34 else | 35 else |
| 35 event_name = "admin/"..stanza.name; | 36 event_name = "admin/"..stanza.name; |
| 36 end | 37 end |
| 37 module:log("debug", "Firing %s", event_name); | 38 module:log("debug", "Firing %s", event_name); |
| 38 return module:fire_event(event_name, event_data); | 39 local ret = module:fire_event(event_name, event_data); |
| 40 if ret == nil then | |
| 41 session.send(st.stanza("repl-result", { type = "error" }):text("No module handled this query. Is mod_admin_shell enabled?")); | |
| 42 end | |
| 43 return ret; | |
| 39 end | 44 end |
| 40 | 45 |
| 41 module:hook("server-stopping", function () | 46 module:hook("server-stopping", function () |
| 42 for _, session in pairs(sessions) do | 47 for _, session in pairs(sessions) do |
| 43 session:close("system-shutdown"); | 48 session:close("system-shutdown"); |
