packages feed

warp 3.2.20 → 3.2.21

raw patch · 5 files changed

+16/−9 lines, 5 files

Files

ChangeLog.md view
@@ -1,8 +1,14 @@+## 3.2.21++* Fixing HTTP/2's timeout handler.+ ## 3.2.20+ * Fixing "Thread killed by timeout reaper when sending large HTTP/2 response"   [#593](https://github.com/yesodweb/wai/issues/593)  ## 3.2.19+ * Fixing 0-length body in HTTP/2   [#597](https://github.com/yesodweb/wai/issues/597)   [#679](https://github.com/yesodweb/wai/issues/679)
Network/Wai/Handler/Warp/HTTP2/Request.hs view
@@ -24,9 +24,8 @@ import Network.Wai.Handler.Warp.HTTP2.Types import Network.Wai.Handler.Warp.HashMap (hashByteString) import Network.Wai.Handler.Warp.Imports-import Network.Wai.Handler.Warp.Request (pauseTimeoutKey, getFileInfoKey)+import Network.Wai.Handler.Warp.Request (getFileInfoKey) import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath)-import qualified Network.Wai.Handler.Warp.Timeout as Timeout import Network.Wai.Handler.Warp.Types  type MkReq = (TokenHeaderList,ValueTable) -> (Maybe Int,IO ByteString) -> IO (Request,InternalInfo)@@ -79,10 +78,9 @@     !path = H.extractPath unparsedPath     !rawPath = if S.settingsNoParsePath settings then unparsedPath else path     !h = hashByteString rawPath+    -- timeout handler must be overwritten with worker's one.     !ii = toInternalInfo ii1 h-    !th = threadHandle ii -- th must be overwritten with worker's one.-    !vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th)-                $ Vault.insert getFileInfoKey (getFileInfo ii)+    !vaultValue = Vault.insert getFileInfoKey (getFileInfo ii)                 $ Vault.insert getHTTP2DataKey (readIORef ref)                 $ Vault.insert setHTTP2DataKey (writeIORef ref)                 $ Vault.insert modifyHTTP2DataKey (modifyIORef' ref)
Network/Wai/Handler/Warp/HTTP2/Worker.hs view
@@ -16,12 +16,14 @@ import qualified Control.Exception as E import Data.ByteString.Builder (byteString) import Data.IORef+import qualified Data.Vault.Lazy as Vault import Network.HPACK import Network.HPACK.Token import qualified Network.HTTP.Types as H import Network.HTTP2 import Network.HTTP2.Priority import Network.Wai+import qualified Network.Wai.Handler.Warp.Timeout as Timeout import Network.Wai.Internal (Response(..), ResponseReceived(..), ResponseReceived(..))  import Network.Wai.Handler.Warp.FileInfoCache@@ -31,6 +33,7 @@ import Network.Wai.Handler.Warp.HTTP2.Request import Network.Wai.Handler.Warp.HTTP2.Types import Network.Wai.Handler.Warp.Imports hiding (insert)+import Network.Wai.Handler.Warp.Request (pauseTimeoutKey) import qualified Network.Wai.Handler.Warp.Response as R import qualified Network.Wai.Handler.Warp.Settings as S import qualified Network.Wai.Handler.Warp.Timeout as T@@ -244,7 +247,9 @@             T.resume th             T.tickle th             let ii' = ii { threadHandle = th }-            app req $ responder ii' reqvt tcont strm req+                vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th) $ vault req+                req' = req { vault = vaultValue }+            app req' $ responder ii' reqvt tcont strm req'         cont1 <- case ex of             Right ResponseReceived -> return True             Left  e@(SomeException _)
test/WithApplicationSpec.hs view
@@ -2,10 +2,8 @@  module WithApplicationSpec where -import           Control.Concurrent import           Control.Exception import           Network.HTTP.Types-import           Network.Socket import           Network.Wai import           System.Environment import           System.IO
warp.cabal view
@@ -1,5 +1,5 @@ Name:                warp-Version:             3.2.20+Version:             3.2.21 Synopsis:            A fast, light-weight web server for WAI applications. License:             MIT License-file:        LICENSE