mirror of
https://github.com/bjc/prosody.git
synced 2025-04-03 21:27:38 +03:00
mod_http: Unhook CORS related event handlers
Prevents CORS related handlers from being left over on reload. BC: `mod_http.apps[app_name][event_name]` is now a table instead of the main handler function.
This commit is contained in:
parent
4394dbf275
commit
8340ca2b18
1 changed files with 10 additions and 3 deletions
|
@ -154,7 +154,11 @@ function module.add_host(module)
|
|||
module:hook_object_event(server, event_name:sub(1, -2), redir_handler, -1);
|
||||
end
|
||||
if not app_handlers[event_name] then
|
||||
app_handlers[event_name] = handler;
|
||||
app_handlers[event_name] = {
|
||||
main = handler;
|
||||
cors = cors_handler;
|
||||
options = options_handler;
|
||||
};
|
||||
module:hook_object_event(server, event_name, handler);
|
||||
module:hook_object_event(server, event_name, cors_handler, 1);
|
||||
module:hook_object_event(server, options_event_name, options_handler, -1);
|
||||
|
@ -176,8 +180,11 @@ function module.add_host(module)
|
|||
local function http_app_removed(event)
|
||||
local app_handlers = apps[event.item.name];
|
||||
apps[event.item.name] = nil;
|
||||
for event_name, handler in pairs(app_handlers) do
|
||||
module:unhook_object_event(server, event_name, handler);
|
||||
for event_name, handlers in pairs(app_handlers) do
|
||||
module:unhook_object_event(server, event_name, handlers.main);
|
||||
module:unhook_object_event(server, event_name, handlers.cors);
|
||||
local options_event_name = event_name:gsub("^%S+", "OPTIONS");
|
||||
module:unhook_object_event(server, options_event_name, handlers.options);
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue