moonbridge
changeset 54:e3df61bf62f4
Adjusted HTTP timeouts
author | jbe |
---|---|
date | Sun Mar 22 16:17:14 2015 +0100 (2015-03-22) |
parents | aaf67ef45c22 |
children | 7a385a440fa1 |
files | example_application.lua moonbridge_http.lua |
line diff
1.1 --- a/example_application.lua Sun Mar 22 13:19:54 2015 +0100 1.2 +++ b/example_application.lua Sun Mar 22 16:17:14 2015 +0100 1.3 @@ -59,7 +59,9 @@ 1.4 connect = http.generate_handler( 1.5 { 1.6 static_headers = {"Server: Moonbridge Example Server"}, 1.7 - request_body_size_limit = 16*1024*1024*1024 -- allow big file uploads 1.8 + request_body_size_limit = 16*1024*1024*1024, -- allow big file uploads 1.9 + request_header_timeout = 360, -- request headers must be sent within 6 minutes (if nil, defaults to timeout below) 1.10 + timeout = 1800 -- request body and response must be sent within 30 minutes 1.11 }, 1.12 function(request) 1.13
2.1 --- a/moonbridge_http.lua Sun Mar 22 13:19:54 2015 +0100 2.2 +++ b/moonbridge_http.lua Sun Mar 22 16:17:14 2015 +0100 2.3 @@ -178,32 +178,27 @@ 2.4 t[#t+1] = "" 2.5 preamble = table.concat(t, "\r\n") 2.6 end 2.7 - -- desired chunk sizes: 2.8 local input_chunk_size = options.maximum_input_chunk_size or options.chunk_size or 16384 2.9 local output_chunk_size = options.minimum_output_chunk_size or options.chunk_size or 1024 2.10 - -- timeouts: 2.11 - local request_header_timeout = options.http_request_header_timeout 2.12 - local request_body_timeout = options.http_request_body_timeout 2.13 - local request_timeout = options.http_request_timeout 2.14 - local response_timeout = options.http_timeout 2.15 - if request_header_timeout == nil then 2.16 - request_header_timeout = 60 2.17 + local request_header_timeout, response_timeout 2.18 + if options.request_header_timeout ~= nil then 2.19 + request_header_timeout = options.request_header_timeout 2.20 + elseif options.timeout ~= nil then 2.21 + request_header_timeout = options.timeout or 0 2.22 + else 2.23 + request_header_timeout = 360 2.24 end 2.25 - if response_timeout == nil then 2.26 - response_timeout = 60 2.27 + if options.timeout ~= nil then 2.28 + response_timeout = options.timeout or 0 2.29 + else 2.30 + response_timeout = 1800 2.31 end 2.32 -- return connect handler: 2.33 return function(socket) 2.34 local survive = true -- set to false if process shall be terminated later 2.35 repeat 2.36 - -- timeout management: 2.37 - if request_header_timeout then 2.38 - timeout(request_header_timeout) 2.39 - elseif request_timeout then 2.40 - timeout(request_timeout) 2.41 - else 2.42 - timeout(0) 2.43 - end 2.44 + -- (re)set timeout: 2.45 + timeout(request_header_timeout or 0) 2.46 -- process named arguments "request_header_size_limit" and "request_body_size_limit": 2.47 local remaining_header_size_limit = options.request_header_size_limit or 1024*1024 2.48 local remaining_body_size_limit = options.request_body_size_limit or 64*1024*1024 2.49 @@ -989,14 +984,7 @@ 2.50 request.cookies[decode_uri(rawkey)] = decode_uri(rawvalue) 2.51 end 2.52 end 2.53 - -- timeout management: 2.54 - if request_body_timeout then 2.55 - timeout(request_body_timeout) 2.56 - request:process_request_body() 2.57 - elseif request_timeout then 2.58 - timeout(request_timeout) 2.59 - request:process_request_body() 2.60 - end 2.61 + -- (re)set timeout: 2.62 timeout(response_timeout or 0) 2.63 -- call underlying handler and remember boolean result: 2.64 if handler(request) ~= true then survive = false end