128 end |
128 end |
129 |
129 |
130 -- initialization. |
130 -- initialization. |
131 -- init http interface |
131 -- init http interface |
132 |
132 |
133 function stats_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", stats_cleanup) |
|
158 end |
|
159 |
|
160 local function setup() |
133 local function setup() |
161 httpserver.new_from_config(ports, request, { base = "server-status" }) |
134 httpserver.new_from_config(ports, request, { base = "server-status" }) |
162 prosody.events.add_handler("module-unloaded", stats_cleanup) |
|
163 end |
135 end |
164 |
136 |
165 if prosody.start_time then |
137 if prosody.start_time then |
166 setup() |
138 setup() |
167 else |
139 else |