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)