webmcp

changeset 328:04b0687130d8

Bugfix regarding request_per_connection counting; Use new :close_after_finish() method of Moonbridge
author jbe
date Tue Mar 24 01:58:17 2015 +0100 (2015-03-24)
parents d8480a60a07d
children 3db9b672ee73
files framework/bin/mcp.lua framework/env/request/handler.lua
line diff
     1.1 --- a/framework/bin/mcp.lua	Tue Mar 24 01:08:32 2015 +0100
     1.2 +++ b/framework/bin/mcp.lua	Tue Mar 24 01:58:17 2015 +0100
     1.3 @@ -303,14 +303,18 @@
     1.4      end
     1.5      local request_count = 0
     1.6      local function inner_handler(http_request)
     1.7 +      request_count = request_count + 1
     1.8 +      if request_count >= max_requests_per_fork then
     1.9 +        http_request:close_after_finish()
    1.10 +      end
    1.11        request.initialize()
    1.12 -      return request.handler(http_request, request_count >= max_requests_per_fork)
    1.13 +      return request.handler(http_request)
    1.14      end
    1.15      local outer_handler = http.generate_handler(inner_handler, args.http_options)
    1.16      args.prepare = postfork_init
    1.17      args.connect = function(socket)
    1.18 -      request_count = request_count + 1
    1.19        if socket.interval then
    1.20 +        request_count = request_count + 1
    1.21          request.initialize()
    1.22          interval_handlers[socket.interval]()
    1.23        else
     2.1 --- a/framework/env/request/handler.lua	Tue Mar 24 01:08:32 2015 +0100
     2.2 +++ b/framework/env/request/handler.lua	Tue Mar 24 01:58:17 2015 +0100
     2.3 @@ -2,7 +2,6 @@
     2.4  success =         -- false if an error occurred, true otherwise
     2.5  request.handler(
     2.6    http_request,   -- HTTP request object
     2.7 -  close           -- boolean indicating whether the server should announce to close the connection
     2.8  )
     2.9  
    2.10  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.
    2.11 @@ -20,7 +19,6 @@
    2.12  end
    2.13  
    2.14  function request.handler(http_request, close)
    2.15 -  local close_sent = false
    2.16    request._http_request = http_request
    2.17    local path = http_request.path
    2.18    if path then
    2.19 @@ -44,19 +42,14 @@
    2.20      end
    2.21    end
    2.22  
    2.23 -  if close then
    2.24 -    request.add_header("Connection", "close")
    2.25 -    close_sent = true
    2.26 -  end
    2.27 -
    2.28    local success, error_info = xpcall(
    2.29      function()
    2.30  
    2.31        if request._route.static then
    2.32          local f, errmsg = io.open(WEBMCP_BASE_PATH .. "static/" .. request._route.static, "r")
    2.33          if not f then
    2.34 +          request.set_status("404 Not Found")
    2.35            if request.get_404_route() then
    2.36 -            request.set_status("404 Not Found")
    2.37              request.forward(request.get_404_route())
    2.38            else
    2.39              error('Could not open static file "' .. request._route.static .. '": ' .. errmsg)
    2.40 @@ -208,9 +201,7 @@
    2.41      if not request._status then
    2.42        request._status = "500 Internal Server Error"
    2.43      end
    2.44 -    if not close_sent then
    2.45 -      request.add_header("Connection", "close")
    2.46 -    end
    2.47 +    http_request:close_after_finish()
    2.48      slot.set_layout('system_error')
    2.49      slot.select('system_error', function()
    2.50        if getmetatable(errobj) == mondelefant.errorobject_metatable then

Impressum / About Us