webapp: Work around bug in Warp's slowloris attack prevention code, that caused regular browsers to stall when they reuse a connection after leaving it idle for 30 seconds. (See https://github.com/yesodweb/wai/issues/146)

This commit is contained in:
Joey Hess 2013-03-09 14:57:48 -04:00
parent 0155f1effa
commit 3e32bb41f6
3 changed files with 12 additions and 1 deletions

View file

@ -56,9 +56,14 @@ browserCommand = "xdg-open"
runWebApp :: Wai.Application -> (SockAddr -> IO ()) -> IO ()
runWebApp app observer = do
sock <- localSocket
void $ forkIO $ runSettingsSocket defaultSettings sock app
void $ forkIO $ runSettingsSocket webAppSettings sock app
observer =<< getSocketName sock
webAppSettings = defaultSettings
-- disable buggy sloworis attack prevention code
{ settingsTimeout = 30 * 60
}
{- Binds to a local socket, selecting any free port.
-
- Prefers to bind to the ipv4 address rather than the ipv6 address

4
debian/changelog vendored
View file

@ -36,6 +36,10 @@ git-annex (4.20130228) UNRELEASED; urgency=low
* assistant: Sync with all git remotes on startup.
* Switch from using regex-compat to regex-tdfa, as the C regex library
is rather buggy.
* webapp: Work around bug in Warp's slowloris attack prevention code,
that caused regular browsers to stall when they reuse a connection
after leaving it idle for 30 seconds.
(See https://github.com/yesodweb/wai/issues/146)
-- Joey Hess <joeyh@debian.org> Wed, 27 Feb 2013 23:20:40 -0400

View file

@ -32,6 +32,8 @@ Hypotheses:
**Verified** Bug filed upstream: <https://github.com/yesodweb/wai/issues/146>
** workaround in place **
* Something deep in git-annex, such as the inotidy code, could be
preventing a web server thread from running. But then why do other
tabs and other web browsers work while it's stuck?