Comparison

plugins/mod_http.lua @ 12923:419e55abd285 0.12

mod_http: Unhook CORS handlers only if active (fixes #1801)
author Kim Alvefur <zash@zash.se>
date Sun, 05 Mar 2023 15:45:01 +0100
parent 12790:24b55f0e2db9
child 12977:74b9e05af71e
child 13139:5d5869f14c4d
comparison
equal deleted inserted replaced
12898:4255db0f8e58 12923:419e55abd285
259 local function http_app_removed(event) 259 local function http_app_removed(event)
260 local app_handlers = apps[event.item.name]; 260 local app_handlers = apps[event.item.name];
261 apps[event.item.name] = nil; 261 apps[event.item.name] = nil;
262 for event_name, handlers in pairs(app_handlers) do 262 for event_name, handlers in pairs(app_handlers) do
263 module:unhook_object_event(server, event_name, handlers.main); 263 module:unhook_object_event(server, event_name, handlers.main);
264 module:unhook_object_event(server, event_name, handlers.cors); 264 if handlers.cors then
265 module:unhook_object_event(server, event_name, handlers.cors);
266 end
265 267
266 if event_name:sub(-2, -1) == "/*" then 268 if event_name:sub(-2, -1) == "/*" then
267 module:unhook_object_event(server, event_name:sub(1, -3), redir_handler, -1); 269 module:unhook_object_event(server, event_name:sub(1, -3), redir_handler, -1);
268 elseif event_name:sub(-1, -1) == "/" then 270 elseif event_name:sub(-1, -1) == "/" then
269 module:unhook_object_event(server, event_name:sub(1, -2), redir_handler, -1); 271 module:unhook_object_event(server, event_name:sub(1, -2), redir_handler, -1);
270 end 272 end
271 273
272 local options_event_name = event_name:gsub("^%S+", "OPTIONS"); 274 if handlers.options then
273 module:unhook_object_event(server, options_event_name, handlers.options); 275 local options_event_name = event_name:gsub("^%S+", "OPTIONS");
276 module:unhook_object_event(server, options_event_name, handlers.options);
277 end
274 end 278 end
275 end 279 end
276 280
277 module:handle_items("http-provider", http_app_added, http_app_removed); 281 module:handle_items("http-provider", http_app_added, http_app_removed);
278 282