@@ -16,12 +16,14 @@ import Control.Exception (SomeException(..), AsyncException(..))
1616import qualified Control.Exception as E
1717import Data.ByteString.Builder (byteString)
1818import Data.IORef
19+import qualified Data.Vault.Lazy as Vault
1920import Network.HPACK
2021import Network.HPACK.Token
2122import qualified Network.HTTP.Types as H
2223import Network.HTTP2
2324import Network.HTTP2.Priority
2425import Network.Wai
26+import qualified Network.Wai.Handler.Warp.Timeout as Timeout
2527import Network.Wai.Internal (Response(..), ResponseReceived(..), ResponseReceived(..))
2628
2729import Network.Wai.Handler.Warp.FileInfoCache
@@ -31,6 +33,7 @@ import Network.Wai.Handler.Warp.HTTP2.Manager
3133import Network.Wai.Handler.Warp.HTTP2.Request
3234import Network.Wai.Handler.Warp.HTTP2.Types
3335import Network.Wai.Handler.Warp.Imports hiding (insert)
36+import Network.Wai.Handler.Warp.Request (pauseTimeoutKey)
3437import qualified Network.Wai.Handler.Warp.Response as R
3538import qualified Network.Wai.Handler.Warp.Settings as S
3639import qualified Network.Wai.Handler.Warp.Timeout as T
@@ -244,7 +247,9 @@ worker ctx@Context{inputQ,controlQ} set app responder tm = do
244247 T.resume th
245248 T.tickle th
246249 let ii' = ii { threadHandle = th }
247− app req $ responder ii' reqvt tcont strm req
250+ vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th) $ vault req
251+ req' = req { vault = vaultValue }
252+ app req' $ responder ii' reqvt tcont strm req'
248253 cont1 <- case ex of
249254 Right ResponseReceived -> return True
250255 Left e@(SomeException _)