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 |