@@ -18,17 +18,17 @@ module Network.Wai.Handler.Warp.Response (
18#define MIN_VERSION_base(x,y,z) 1
18#define MIN_VERSION_base(x,y,z) 1
21−import Blaze.ByteString.Builder (fromByteString, Builder, flush)
22import Blaze.ByteString.Builder.HTTP (chunkedTransferEncoding, chunkedTransferTerminator)
21import Blaze.ByteString.Builder.HTTP (chunkedTransferEncoding, chunkedTransferTerminator)
23#if __GLASGOW_HASKELL__ < 709
22#if __GLASGOW_HASKELL__ < 709
24import Control.Applicative
23import Control.Applicative
26import Control.Exception
25import Control.Exception
26+import Control.Monad (unless, when)
27import Data.Array ((!))
27import Data.Array ((!))
28import Data.ByteString (ByteString)
28import Data.ByteString (ByteString)
29−import Data.Streaming.Blaze (newBlazeRecv, reuseBufferStrategy)
30import qualified Data.ByteString as S
29import qualified Data.ByteString as S
31−import Control.Monad (unless, when)
30+import Data.ByteString.Builder (byteString, Builder)
31+import Data.ByteString.Builder.Extra (flush)
32import qualified Data.ByteString.Char8 as B (pack)
32import qualified Data.ByteString.Char8 as B (pack)
33import qualified Data.CaseInsensitive as CI
33import qualified Data.CaseInsensitive as CI
34import Data.Function (on)
34import Data.Function (on)
@@ -42,10 +42,11 @@ import Data.Monoid ((<>))
43import Data.Monoid (mappend, mempty)
43import Data.Monoid (mappend, mempty)
45+import Data.Streaming.Blaze (newBlazeRecv, reuseBufferStrategy)
45import Data.Version (showVersion)
46import Data.Version (showVersion)
46import qualified Network.HTTP.Types as H
47import qualified Network.HTTP.Types as H
47import Network.Wai
48import Network.Wai
48−import Network.Wai.Handler.Warp.Buffer (toBlazeBuffer)
49+import Network.Wai.Handler.Warp.Buffer (toBuilderBuffer)
49import qualified Network.Wai.Handler.Warp.Date as D
50import qualified Network.Wai.Handler.Warp.Date as D
50import qualified Network.Wai.Handler.Warp.FdCache as F
51import qualified Network.Wai.Handler.Warp.FdCache as F
51import Network.Wai.Handler.Warp.Header
52import Network.Wai.Handler.Warp.Header
@@ -268,7 +269,7 @@ sendRsp conn mfdc ver s0 hs0 (RspFile path mPart mRange isHead hook) = do
268 hs = addAcceptRanges hs0
269 hs = addAcceptRanges hs0
269 s2 = H.status404
270 s2 = H.status404
270 hs2 = replaceHeader H.hContentType "text/plain; charset=utf-8" hs0
271 hs2 = replaceHeader H.hContentType "text/plain; charset=utf-8" hs0
271− body = fromByteString "File not found"
272+ body = byteString "File not found"
273----------------------------------------------------------------
274----------------------------------------------------------------
@@ -287,7 +288,7 @@ sendRsp conn _ ver s hs (RspBuilder body needsChunked) = do
287sendRsp conn _ ver s hs (RspStream streamingBody needsChunked th) = do
288sendRsp conn _ ver s hs (RspStream streamingBody needsChunked th) = do
288 header <- composeHeaderBuilder ver s hs needsChunked
289 header <- composeHeaderBuilder ver s hs needsChunked
289 (recv, finish) <- newBlazeRecv $ reuseBufferStrategy
290 (recv, finish) <- newBlazeRecv $ reuseBufferStrategy
290− $ toBlazeBuffer (connWriteBuffer conn) (connBufferSize conn)
291+ $ toBuilderBuffer (connWriteBuffer conn) (connBufferSize conn)
291 let send builder = do
292 let send builder = do
292 popper <- recv builder
293 popper <- recv builder
293 let loop = do
294 let loop = do
@@ -448,6 +449,6 @@ replaceHeader k v hdrs = (k,v) : deleteBy ((==) `on` fst) (k,v) hdrs
449composeHeaderBuilder :: H.HttpVersion -> H.Status -> H.ResponseHeaders -> Bool -> IO Builder
450composeHeaderBuilder :: H.HttpVersion -> H.Status -> H.ResponseHeaders -> Bool -> IO Builder
450composeHeaderBuilder ver s hs True =
451composeHeaderBuilder ver s hs True =
451− fromByteString <$> composeHeader ver s (addTransferEncoding hs)
452+ byteString <$> composeHeader ver s (addTransferEncoding hs)
452composeHeaderBuilder ver s hs False =
453composeHeaderBuilder ver s hs False =
453− fromByteString <$> composeHeader ver s hs
454+ byteString <$> composeHeader ver s hs