# HG changeset patch # User jbe # Date 1427158697 -3600 # Node ID 04b0687130d879479390726551d1efd82031c012 # Parent d8480a60a07dae0ad53741ed97fc55689b72fdcf Bugfix regarding request_per_connection counting; Use new :close_after_finish() method of Moonbridge diff -r d8480a60a07d -r 04b0687130d8 framework/bin/mcp.lua --- a/framework/bin/mcp.lua Tue Mar 24 01:08:32 2015 +0100 +++ b/framework/bin/mcp.lua Tue Mar 24 01:58:17 2015 +0100 @@ -303,14 +303,18 @@ end local request_count = 0 local function inner_handler(http_request) + request_count = request_count + 1 + if request_count >= max_requests_per_fork then + http_request:close_after_finish() + end request.initialize() - return request.handler(http_request, request_count >= max_requests_per_fork) + return request.handler(http_request) end local outer_handler = http.generate_handler(inner_handler, args.http_options) args.prepare = postfork_init args.connect = function(socket) - request_count = request_count + 1 if socket.interval then + request_count = request_count + 1 request.initialize() interval_handlers[socket.interval]() else diff -r d8480a60a07d -r 04b0687130d8 framework/env/request/handler.lua --- a/framework/env/request/handler.lua Tue Mar 24 01:08:32 2015 +0100 +++ b/framework/env/request/handler.lua Tue Mar 24 01:58:17 2015 +0100 @@ -2,7 +2,6 @@ success = -- false if an error occurred, true otherwise request.handler( http_request, -- HTTP request object - close -- boolean indicating whether the server should announce to close the connection ) Called by mcp.lua to process an HTTP request. Calls request.router(), and handles the request. Note: request initializers will have to be (automatically) executed before this function is invoked by mcp.lua. @@ -20,7 +19,6 @@ end function request.handler(http_request, close) - local close_sent = false request._http_request = http_request local path = http_request.path if path then @@ -44,19 +42,14 @@ end end - if close then - request.add_header("Connection", "close") - close_sent = true - end - local success, error_info = xpcall( function() if request._route.static then local f, errmsg = io.open(WEBMCP_BASE_PATH .. "static/" .. request._route.static, "r") if not f then + request.set_status("404 Not Found") if request.get_404_route() then - request.set_status("404 Not Found") request.forward(request.get_404_route()) else error('Could not open static file "' .. request._route.static .. '": ' .. errmsg) @@ -208,9 +201,7 @@ if not request._status then request._status = "500 Internal Server Error" end - if not close_sent then - request.add_header("Connection", "close") - end + http_request:close_after_finish() slot.set_layout('system_error') slot.select('system_error', function() if getmetatable(errobj) == mondelefant.errorobject_metatable then