# HG changeset patch # User Marco Cirillo # Date 1326764458 0 # Node ID 0b52d82ea0b39856abd645b11ea45776820f9359 # Parent cd5581b58fdcff61f430df97cdc2c31dce3f9a5b mod_server_status: added http cleanup code from mod_register_json diff -r cd5581b58fdc -r 0b52d82ea0b3 mod_server_status/mod_server_status.lua --- a/mod_server_status/mod_server_status.lua Tue Jan 17 01:31:58 2012 +0000 +++ b/mod_server_status/mod_server_status.lua Tue Jan 17 01:40:58 2012 +0000 @@ -129,8 +129,37 @@ -- initialization. -- init http interface + +function cleanup() -- handy, recycled from mod_register_json + module:log("debug", "Cleaning up handlers and stuff as module is being unloaded.") + for _, options in ipairs(ports) do + if options.port then + httpserver.new.http_servers[options.port].handlers[options.path or "server-status"] = nil + end + end + + local event = require "core.configmanager".get("*", "core", "use_libevent"); + + -- if there're no handlers left clean the socket, not sure if it works with server_select + if not event then + for _, options in ipairs(ports) do + if options.port and not next(httpserver.new.http_servers[options.port].handlers) then + httpserver.new.http_servers[options.port] = nil + if options.interface then + for _, value in ipairs(options.interface) do + if server.getserver(value, options.port) then server.removeserver(value, options.port) end + end + else if server.getserver("*", options.port) then server.removeserver("*", options.port) end end + end + end + end + + prosody.events.remove_handler("module-unloaded", cleanup) +end + local function setup() httpserver.new_from_config(ports, request, { base = "server-status" }) + prosody.events.add_handler("module-unloaded", cleanup) end if prosody.start_time then