comparison mod_server_status/mod_server_status.lua @ 564:0b52d82ea0b3

mod_server_status: added http cleanup code from mod_register_json
author Marco Cirillo <maranda@lightwitch.org>
date Tue, 17 Jan 2012 01:40:58 +0000
parents 0afe88f9bdde
children fe85e18a06cb
comparison
equal deleted inserted replaced
563:cd5581b58fdc 564:0b52d82ea0b3
127 end 127 end
128 end 128 end
129 129
130 -- initialization. 130 -- initialization.
131 -- init http interface 131 -- init http interface
132
133 function cleanup() -- handy, recycled from mod_register_json
134 module:log("debug", "Cleaning up handlers and stuff as module is being unloaded.")
135 for _, options in ipairs(ports) do
136 if options.port then
137 httpserver.new.http_servers[options.port].handlers[options.path or "server-status"] = nil
138 end
139 end
140
141 local event = require "core.configmanager".get("*", "core", "use_libevent");
142
143 -- if there're no handlers left clean the socket, not sure if it works with server_select
144 if not event then
145 for _, options in ipairs(ports) do
146 if options.port and not next(httpserver.new.http_servers[options.port].handlers) then
147 httpserver.new.http_servers[options.port] = nil
148 if options.interface then
149 for _, value in ipairs(options.interface) do
150 if server.getserver(value, options.port) then server.removeserver(value, options.port) end
151 end
152 else if server.getserver("*", options.port) then server.removeserver("*", options.port) end end
153 end
154 end
155 end
156
157 prosody.events.remove_handler("module-unloaded", cleanup)
158 end
159
132 local function setup() 160 local function setup()
133 httpserver.new_from_config(ports, request, { base = "server-status" }) 161 httpserver.new_from_config(ports, request, { base = "server-status" })
162 prosody.events.add_handler("module-unloaded", cleanup)
134 end 163 end
135 164
136 if prosody.start_time then 165 if prosody.start_time then
137 setup() 166 setup()
138 else 167 else