# HG changeset patch # User jbe # Date 1427037434 -3600 # Node ID e3df61bf62f4ae1c66b1f2f2d03e0a22f19921cc # Parent aaf67ef45c2272c19440d644438a0c7bce7d7081 Adjusted HTTP timeouts diff -r aaf67ef45c22 -r e3df61bf62f4 example_application.lua --- a/example_application.lua Sun Mar 22 13:19:54 2015 +0100 +++ b/example_application.lua Sun Mar 22 16:17:14 2015 +0100 @@ -59,7 +59,9 @@ connect = http.generate_handler( { static_headers = {"Server: Moonbridge Example Server"}, - request_body_size_limit = 16*1024*1024*1024 -- allow big file uploads + request_body_size_limit = 16*1024*1024*1024, -- allow big file uploads + request_header_timeout = 360, -- request headers must be sent within 6 minutes (if nil, defaults to timeout below) + timeout = 1800 -- request body and response must be sent within 30 minutes }, function(request) diff -r aaf67ef45c22 -r e3df61bf62f4 moonbridge_http.lua --- a/moonbridge_http.lua Sun Mar 22 13:19:54 2015 +0100 +++ b/moonbridge_http.lua Sun Mar 22 16:17:14 2015 +0100 @@ -178,32 +178,27 @@ t[#t+1] = "" preamble = table.concat(t, "\r\n") end - -- desired chunk sizes: local input_chunk_size = options.maximum_input_chunk_size or options.chunk_size or 16384 local output_chunk_size = options.minimum_output_chunk_size or options.chunk_size or 1024 - -- timeouts: - local request_header_timeout = options.http_request_header_timeout - local request_body_timeout = options.http_request_body_timeout - local request_timeout = options.http_request_timeout - local response_timeout = options.http_timeout - if request_header_timeout == nil then - request_header_timeout = 60 + local request_header_timeout, response_timeout + if options.request_header_timeout ~= nil then + request_header_timeout = options.request_header_timeout + elseif options.timeout ~= nil then + request_header_timeout = options.timeout or 0 + else + request_header_timeout = 360 end - if response_timeout == nil then - response_timeout = 60 + if options.timeout ~= nil then + response_timeout = options.timeout or 0 + else + response_timeout = 1800 end -- return connect handler: return function(socket) local survive = true -- set to false if process shall be terminated later repeat - -- timeout management: - if request_header_timeout then - timeout(request_header_timeout) - elseif request_timeout then - timeout(request_timeout) - else - timeout(0) - end + -- (re)set timeout: + timeout(request_header_timeout or 0) -- process named arguments "request_header_size_limit" and "request_body_size_limit": local remaining_header_size_limit = options.request_header_size_limit or 1024*1024 local remaining_body_size_limit = options.request_body_size_limit or 64*1024*1024 @@ -989,14 +984,7 @@ request.cookies[decode_uri(rawkey)] = decode_uri(rawvalue) end end - -- timeout management: - if request_body_timeout then - timeout(request_body_timeout) - request:process_request_body() - elseif request_timeout then - timeout(request_timeout) - request:process_request_body() - end + -- (re)set timeout: timeout(response_timeout or 0) -- call underlying handler and remember boolean result: if handler(request) ~= true then survive = false end