mod_server_status/mod_server_status.lua
changeset 564 0b52d82ea0b3
parent 546 0afe88f9bdde
child 567 fe85e18a06cb
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