Increase default timeout (#2)

... and make the timeout configurable
This commit is contained in:
Gabriella Gonzalez 2022-07-06 12:31:19 -07:00 committed by GitHub
parent eaceeeb8ce
commit 027398c9e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 9 deletions

View File

@ -334,7 +334,7 @@ readSecretKey = fmap ByteString.Char8.strip . ByteString.readFile
main :: IO ()
main = do
options@Options{ priority, verbosity } <- do
options@Options{ priority, timeout, verbosity } <- do
Options.execParser Options.parserInfo
storeDirectory <- Nix.getStoreDir
@ -351,27 +351,29 @@ main = do
let application = logger (makeApplication ApplicationOptions{..})
let sharedSettings =
Warp.defaultSettings
& Warp.setTimeout (fromIntegral timeout)
case options of
Options{ ssl = Disabled, socket = TCP{ host, port } } -> do
let settings =
Warp.defaultSettings
sharedSettings
& Warp.setHost host
& Warp.setPort port
Warp.runSettings settings application
Options{ ssl = Disabled, socket = Unix{ backlog, path } } -> do
let settings = Warp.defaultSettings
socket <- toSocket backlog path
Warp.runSettingsSocket settings socket application
Warp.runSettingsSocket sharedSettings socket application
Options{ ssl = Enabled{ cert, key }, socket = TCP{ host, port } } -> do
let tlsSettings = WarpTLS.tlsSettings cert key
let settings =
Warp.defaultSettings
sharedSettings
& Warp.setHost host
& Warp.setPort port
@ -380,8 +382,6 @@ main = do
Options{ ssl = Enabled{ cert, key }, socket = Unix{ backlog, path } } -> do
let tlsSettings = WarpTLS.tlsSettings cert key
let settings = Warp.defaultSettings
socket <- toSocket backlog path
WarpTLS.runTLSSocket tlsSettings settings socket application
WarpTLS.runTLSSocket tlsSettings sharedSettings socket application

View File

@ -29,6 +29,7 @@ data Options = Options
{ priority :: Integer
, socket :: Socket
, ssl :: SSL
, timeout :: Natural
, verbosity :: Verbosity
}
@ -128,6 +129,17 @@ parsePriority =
<> Options.value 30
)
parseTimeout :: Parser Natural
parseTimeout =
Options.option Options.auto
( Options.long "timeout"
<> Options.help "Timeout for requests"
<> Options.metavar "SECONDS"
-- nix-serve does not timeout requests, but warp insists on a
-- timeout, so we use the same default timeout as hydra
<> Options.value (10 * 60)
)
parseVerbosity :: Parser Verbosity
parseVerbosity =
Options.flag' Quiet
@ -148,6 +160,8 @@ parseOptions = do
priority <- parsePriority
timeout <- parseTimeout
verbosity <- parseVerbosity
return Options{..}
@ -198,6 +212,8 @@ parseListen = do
priority <- parsePriority
timeout <- parseTimeout
verbosity <- parseVerbosity
return Options{..}