on master help sign in
Merge PR #666.
commit0033a3d99a1c556407b5f9bfa84ff7d797e30d4c authorKazu Yamamoto <kazu@iij.ad.jp> dateTue 16 Jan 2018, 11:08 (9 years ago) parent22256bd1b59c17
9 files changed+95−20
wai-extra/ChangeLog.md+5 wai-extra/Network/Wai/Handler/CGI.hs+10 wai-extra/Network/Wai/Middleware/Gzip.hs+12−3 wai-extra/Network/Wai/Middleware/RequestLogger.hs+1−1 wai-extra/wai-extra.cabal+2−2 warp/ChangeLog.md+5 warp/Network/Wai/Handler/Warp/Response.hs+2−2 warp/bench/Parser.hs+10−10 warp/warp.cabal+48−2
wai-extra/ChangeLog.md+5
@@ -1,3 +1,8 @@
1+## 3.0.22.0
2+
3+* Support for streaming-commons 0.2
4+* Support for resourcet 1.2
5+
16## 3.0.21.0
27
38* Export `Network.Wai.Parse.noLimitParseRequestBodyOptions` [#662](https://github.com/yesodweb/wai/pull/662).
wai-extra/Network/Wai/Handler/CGI.hs+10
@@ -29,7 +29,13 @@ import qualified Data.CaseInsensitive as CI
2929#if __GLASGOW_HASKELL__ < 710
3030import Data.Monoid (mconcat, mempty, mappend)
3131#endif
32+
33+#if MIN_VERSION_streaming_commons(0, 2, 0)
34+import qualified Data.Streaming.ByteString.Builder as Blaze
35+#else
3236import qualified Data.Streaming.Blaze as Blaze
37+#endif
38+
3339import Data.Function (fix)
3440import Control.Monad (unless, void)
3541
@@ -130,7 +136,11 @@ runGeneric vars inputH outputH xsendfile app = do
130136 return ResponseReceived
131137 _ -> do
132138 let (s, hs, wb) = responseToStream res
139+#if MIN_VERSION_streaming_commons(0, 2, 0)
140+ (blazeRecv, blazeFinish) <- Blaze.newBuilderRecv Blaze.defaultStrategy
141+#else
133142 (blazeRecv, blazeFinish) <- Blaze.newBlazeRecv Blaze.defaultStrategy
143+#endif
134144 wb $ \b -> do
135145 let sendBuilder builder = do
136146 popper <- blazeRecv builder
wai-extra/Network/Wai/Middleware/Gzip.hs+12−3
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE Rank2Types, ScopedTypeVariables #-}
23---------------------------------------------------------
34-- |
@@ -35,7 +36,11 @@ import Control.Exception (try, SomeException)
3536import qualified Data.Set as Set
3637import Network.Wai.Header
3738import Network.Wai.Internal
39+#if MIN_VERSION_streaming_commons(0, 2, 0)
40+import qualified Data.Streaming.ByteString.Builder as B
41+#else
3842import qualified Data.Streaming.Blaze as B
43+#endif
3944import qualified Data.Streaming.Zlib as Z
4045import qualified Blaze.ByteString.Builder as Blaze
4146import Control.Monad (unless)
@@ -69,7 +74,7 @@ instance Default GzipSettings where
6974 def = GzipSettings GzipIgnore defaultCheckMime
7075
7176-- | MIME types that will be compressed by default:
72−-- @text/*@, @application/json@, @application/javascript@,
77+-- @text/@ @*@, @application/json@, @application/javascript@,
7378-- @application/ecmascript@, @image/x-icon@.
7479defaultCheckMime :: S.ByteString -> Bool
7580defaultCheckMime bs =
@@ -101,8 +106,8 @@ gzip set app env sendResponse = app env $ \res ->
101106 let
102107 compressedVersion = file ++ ".gz"
103108 in
104− doesFileExist compressedVersion >>= \x ->
105− if x
109+ doesFileExist compressedVersion >>= \y ->
110+ if y
106111 then (sendResponse $ ResponseFile s (fixHeaders hs) compressedVersion Nothing)
107112 else (runAction (ResponseFile s hs file Nothing, nextAction))
108113 (ResponseFile s hs file Nothing, GzipCacheFolder cache) ->
@@ -182,7 +187,11 @@ compressE set res sendResponse =
182187 Just m | gzipCheckMime set m ->
183188 let hs' = fixHeaders hs
184189 in wb $ \body -> sendResponse $ responseStream s hs' $ \sendChunk flush -> do
190+#if MIN_VERSION_streaming_commons(0, 2, 0)
191+ (blazeRecv, _) <- B.newBuilderRecv B.defaultStrategy
192+#else
185193 (blazeRecv, _) <- B.newBlazeRecv B.defaultStrategy
194+#endif
186195 deflate <- Z.initDeflate 1 (Z.WindowBits 31)
187196 let sendBuilder builder = do
188197 popper <- blazeRecv builder
wai-extra/Network/Wai/Middleware/RequestLogger.hs+1−1
@@ -22,7 +22,7 @@ module Network.Wai.Middleware.RequestLogger
2222import System.IO (Handle, hFlush, stdout)
2323import qualified Blaze.ByteString.Builder as B
2424import qualified Data.ByteString as BS
25−import Data.ByteString.Char8 (pack, unpack)
25+import Data.ByteString.Char8 (pack)
2626import Control.Monad (when)
2727import Control.Monad.IO.Class (liftIO)
2828import Network.Wai
wai-extra/wai-extra.cabal+2−2
@@ -1,5 +1,5 @@
11Name: wai-extra
2−Version: 3.0.21.0
2+Version: 3.0.22.0
33Synopsis: Provides some basic WAI handlers and middleware.
44description:
55 Provides basic WAI handler and middleware functionality:
@@ -103,7 +103,7 @@ Library
103103 , fast-logger >= 2.4.5 && < 2.5
104104 , wai-logger >= 2.2.6 && < 2.4
105105 , ansi-terminal
106− , resourcet >= 0.4.6 && < 1.2
106+ , resourcet >= 0.4.6 && < 1.3
107107 , void >= 0.5
108108 , stringsearch >= 0.3 && < 0.4
109109 , containers
warp/ChangeLog.md+5
@@ -1,3 +1,8 @@
1+## 3.2.14
2+
3+* Support streaming-commons 0.2
4+* Warnings cleanup
5+
16## 3.2.13
27
38* Tickling HTTP/2 timer. [624](https://github.com/yesodweb/wai/pull/624)
warp/Network/Wai/Handler/Warp/Response.hs+2−2
@@ -22,7 +22,7 @@ import Data.ByteString.Builder.Extra (flush)
2222import qualified Data.ByteString.Char8 as C8
2323import qualified Data.CaseInsensitive as CI
2424import Data.Function (on)
25−import Data.Streaming.Blaze (newBlazeRecv, reuseBufferStrategy)
25+import Data.Streaming.ByteString.Builder (newByteStringBuilderRecv, reuseBufferStrategy)
2626import Data.Version (showVersion)
2727import Data.Word8 (_cr, _lf)
2828import qualified Network.HTTP.Types as H
@@ -224,7 +224,7 @@ sendRsp conn _ ver s hs (RspBuilder body needsChunked) = do
224224
225225sendRsp conn _ ver s hs (RspStream streamingBody needsChunked th) = do
226226 header <- composeHeaderBuilder ver s hs needsChunked
227− (recv, finish) <- newBlazeRecv $ reuseBufferStrategy
227+ (recv, finish) <- newByteStringBuilderRecv $ reuseBufferStrategy
228228 $ toBuilderBuffer (connWriteBuffer conn) (connBufferSize conn)
229229 let send builder = do
230230 popper <- recv builder
warp/bench/Parser.hs+10−10
@@ -18,7 +18,7 @@ import Foreign.ForeignPtr
1818import Foreign.Ptr
1919import Foreign.Storable
2020
21−import Criterion.Main
21+import Gauge
2222
2323-- $setup
2424-- >>> :set -XOverloadedStrings
@@ -63,15 +63,15 @@ parseRequestLine3 :: ByteString
6363 ,H.HttpVersion)
6464parseRequestLine3 requestLine = ret
6565 where
66− (!method,!rest) = S.breakByte 32 requestLine -- ' '
66+ (!method,!rest) = S.break (== 32) requestLine -- ' '
6767 (!pathQuery,!httpVer')
6868 | rest == "" = throw badmsg
69− | otherwise = S.breakByte 32 (S.drop 1 rest) -- ' '
70− (!path,!query) = S.breakByte 63 pathQuery -- '?'
69+ | otherwise = S.break (== 32) (S.drop 1 rest) -- ' '
70+ (!path,!query) = S.break (== 63) pathQuery -- '?'
7171 !httpVer = S.drop 1 httpVer'
7272 (!http,!ver)
7373 | httpVer == "" = throw badmsg
74− | otherwise = S.breakByte 47 httpVer -- '/'
74+ | otherwise = S.break (== 47) httpVer -- '/'
7575 !hv | http /= "HTTP" = throw NonHttp
7676 | ver == "/1.1" = H.http11
7777 | otherwise = H.http10
@@ -169,13 +169,13 @@ parseRequestLine1 :: ByteString
169169 ,ByteString -- Query
170170 ,H.HttpVersion)
171171parseRequestLine1 requestLine = do
172− let (!method,!rest) = S.breakByte 32 requestLine -- ' '
173− (!pathQuery,!httpVer') = S.breakByte 32 (S.drop 1 rest) -- ' '
172+ let (!method,!rest) = S.break (== 32) requestLine -- ' '
173+ (!pathQuery,!httpVer') = S.break (== 32) (S.drop 1 rest) -- ' '
174174 !httpVer = S.drop 1 httpVer'
175175 when (rest == "" || httpVer == "") $
176176 throwIO $ BadFirstLine $ B.unpack requestLine
177− let (!path,!query) = S.breakByte 63 pathQuery -- '?'
178− (!http,!ver) = S.breakByte 47 httpVer -- '/'
177+ let (!path,!query) = S.break (== 63) pathQuery -- '?'
178+ (!http,!ver) = S.break (== 47) httpVer -- '/'
179179 when (http /= "HTTP") $ throwIO NonHttp
180180 let !hv | ver == "/1.1" = H.http11
181181 | otherwise = H.http10
@@ -205,7 +205,7 @@ parseRequestLine0 s =
205205 !http' = S.concat http''
206206 (!hfirst, !hsecond) = S.splitAt 5 http'
207207 if hfirst == "HTTP/"
208− then let (!rpath, !qstring) = S.breakByte 63 query -- '?'
208+ then let (!rpath, !qstring) = S.break (== 63) query -- '?'
209209 !hv =
210210 case hsecond of
211211 "1.1" -> H.http11
warp/warp.cabal+48−2
@@ -1,5 +1,5 @@
11Name: warp
2−Version: 3.2.13
2+Version: 3.2.14
33Synopsis: A fast, light-weight web server for WAI applications.
44License: MIT
55License-file: LICENSE
@@ -136,6 +136,44 @@ Test-Suite spec
136136 SendFileSpec
137137 WithApplicationSpec
138138 HTTP
139+ Network.Wai.Handler.Warp
140+ Network.Wai.Handler.Warp.Buffer
141+ Network.Wai.Handler.Warp.Conduit
142+ Network.Wai.Handler.Warp.Counter
143+ Network.Wai.Handler.Warp.Date
144+ Network.Wai.Handler.Warp.FdCache
145+ Network.Wai.Handler.Warp.File
146+ Network.Wai.Handler.Warp.FileInfoCache
147+ Network.Wai.Handler.Warp.HTTP2
148+ Network.Wai.Handler.Warp.HTTP2.EncodeFrame
149+ Network.Wai.Handler.Warp.HTTP2.File
150+ Network.Wai.Handler.Warp.HTTP2.HPACK
151+ Network.Wai.Handler.Warp.HTTP2.Manager
152+ Network.Wai.Handler.Warp.HTTP2.Receiver
153+ Network.Wai.Handler.Warp.HTTP2.Request
154+ Network.Wai.Handler.Warp.HTTP2.Sender
155+ Network.Wai.Handler.Warp.HTTP2.Types
156+ Network.Wai.Handler.Warp.HTTP2.Worker
157+ Network.Wai.Handler.Warp.HashMap
158+ Network.Wai.Handler.Warp.Header
159+ Network.Wai.Handler.Warp.IO
160+ Network.Wai.Handler.Warp.Imports
161+ Network.Wai.Handler.Warp.MultiMap
162+ Network.Wai.Handler.Warp.PackInt
163+ Network.Wai.Handler.Warp.ReadInt
164+ Network.Wai.Handler.Warp.Recv
165+ Network.Wai.Handler.Warp.Request
166+ Network.Wai.Handler.Warp.RequestHeader
167+ Network.Wai.Handler.Warp.Response
168+ Network.Wai.Handler.Warp.ResponseHeader
169+ Network.Wai.Handler.Warp.Run
170+ Network.Wai.Handler.Warp.SendFile
171+ Network.Wai.Handler.Warp.Settings
172+ Network.Wai.Handler.Warp.Timeout
173+ Network.Wai.Handler.Warp.Types
174+ Network.Wai.Handler.Warp.WithApplication
175+ Paths_warp
176+
139177 Hs-Source-Dirs: test, .
140178 Type: exitcode-stdio-1.0
141179
@@ -185,12 +223,20 @@ Test-Suite spec
185223Benchmark parser
186224 Type: exitcode-stdio-1.0
187225 Main-Is: Parser.hs
226+ other-modules: Network.Wai.Handler.Warp.Date
227+ Network.Wai.Handler.Warp.FdCache
228+ Network.Wai.Handler.Warp.FileInfoCache
229+ Network.Wai.Handler.Warp.HashMap
230+ Network.Wai.Handler.Warp.Imports
231+ Network.Wai.Handler.Warp.MultiMap
232+ Network.Wai.Handler.Warp.Timeout
233+ Network.Wai.Handler.Warp.Types
188234 HS-Source-Dirs: bench .
189235 Build-Depends: base >= 4.8 && < 5
190236 , auto-update
191237 , bytestring
192238 , containers
193− , criterion >= 1
239+ , gauge
194240 , hashable
195241 , http-date
196242 , http-types