Software /
code /
prosody
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 |
parent | 12418:dd47adf74e93 |
child | 12888: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"); |