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

Impressum / About Us