comparison mod_http_logging/mod_http_logging.lua @ 2969:8681729a47d5

mod_http_logging: Wrap API for sending data from file handles
author Kim Alvefur <zash@zash.se>
date Fri, 30 Mar 2018 13:40:06 +0200
parents 569b98d6fca1
children c89be016a075
comparison
equal deleted inserted replaced
2968:569b98d6fca1 2969:8681729a47d5
39 log_response(response, body); 39 log_response(response, body);
40 end 40 end
41 return send_response(response, body); 41 return send_response(response, body);
42 end 42 end
43 43
44 local send_file = server.send_file;
45 local function log_and_send_file(response, f)
46 if not response.finished then
47 log_response(response);
48 end
49 return send_file(response, f);
50 end
51
44 if module.wrap_object_event then 52 if module.wrap_object_event then
45 -- Use object event wrapping, allows clean unloading of the module 53 -- Use object event wrapping, allows clean unloading of the module
46 module:wrap_object_event(server._events, false, function (handlers, event_name, event_data) 54 module:wrap_object_event(server._events, false, function (handlers, event_name, event_data)
47 if event_data.response then 55 if event_data.response then
48 event_data.response.send = log_and_send_response; 56 event_data.response.send = log_and_send_response;
57 event_data.response.send_file = log_and_send_file;
49 end 58 end
50 return handlers(event_name, event_data); 59 return handlers(event_name, event_data);
51 end); 60 end);
52 else 61 else
53 -- Fall back to monkeypatching, unlikely to behave nicely in the 62 -- Fall back to monkeypatching, unlikely to behave nicely in the
54 -- presence of other modules also doing this 63 -- presence of other modules also doing this
55 server.send_response = log_and_send_response; 64 server.send_response = log_and_send_response;
65 server.send_file = log_and_send_file;
56 function module.unload() 66 function module.unload()
57 server.send_response = send_response; 67 server.send_response = send_response;
68 server.send_file = send_file;
58 end 69 end
59 end 70 end