webmcp

changeset 288:c51f283dfb0d

Request/response timeouts
author jbe
date Sun Mar 22 12:21:46 2015 +0100 (2015-03-22)
parents a9ad9186a922
children d36e69dfb59e
files framework/bin/mcp.lua
line diff
     1.1 --- a/framework/bin/mcp.lua	Sun Mar 22 04:08:53 2015 +0100
     1.2 +++ b/framework/bin/mcp.lua	Sun Mar 22 12:21:46 2015 +0100
     1.3 @@ -217,21 +217,30 @@
     1.4  -- invoke moonbridge
     1.5  if WEBMCP_MODE == "listen" then
     1.6    local http_options = request.get_http_options()
     1.7 -  local min_requests_per_connect = http_options.min_requests_per_connect or 90
     1.8 -  local max_requests_per_connect = http_options.max_requests_per_connect or 100
     1.9 +  local min_requests_per_fork  = http_options.min_requests_per_fork or 50
    1.10 +  local max_requests_per_fork  = http_options.max_requests_per_fork or 100
    1.11 +  local request_header_timeout = http_options.request_header_timeout or 10
    1.12 +  local request_timeout        = http_options.request_timeout
    1.13 +  local response_timeout       = http_options.response_timeout or 60
    1.14    local http = require("moonbridge_http")
    1.15    for i, listener in ipairs(listeners) do
    1.16      local request_count = 0
    1.17      local function inner_handler(http_request)
    1.18 +      if http_options.request_timeout then
    1.19 +        timeout(request_timeout)
    1.20 +        http_request:process_request_body()
    1.21 +      end
    1.22 +      timeout(response_timeout)
    1.23        request_count = request_count + 1
    1.24 -      request.handler(http_request, request_count >= max_requests_per_connect)
    1.25 +      request.handler(http_request, request_count >= max_requests_per_fork)
    1.26 +      timeout(request_header_timeout)
    1.27      end
    1.28      local outer_handler = http.generate_handler(inner_handler, http_options)
    1.29 -    --listener.prepare = execute.postfork_initializers
    1.30      listener.prepare = postfork_init
    1.31      listener.connect = function(socket)
    1.32 +      timeout(request_header_timeout)
    1.33        outer_handler(socket)
    1.34 -      return request_count < min_requests_per_connect
    1.35 +      return request_count < min_requests_per_fork
    1.36      end
    1.37      listener.finish = execute.finalizers
    1.38      moonbridge_listen(listener)

Impressum / About Us