@@ -46,6 +46,7 @@ import qualified Data.Enumerator as E
4646import Data.Enumerator.IO (iterHandle)
4747import Control.Monad.IO.Class (liftIO)
4848import Blaze.ByteString.Builder.Enumerator (builderToByteString)
49+import Blaze.ByteString.Builder.HTTP (chunkedTransferEncoding)
4950import Blaze.ByteString.Builder (fromByteString, Builder, toLazyByteString)
5051import Blaze.ByteString.Builder.Char8 (fromChar)
5152import Data.Monoid (mconcat)
@@ -179,16 +180,12 @@ sendResponse :: HttpVersion -> Handle -> Response -> IO ()
179180sendResponse hv handle res = do
180181 responseEnumerator res $ \s hs -> do
181182 liftIO $ L.hPutStr handle $ toLazyByteString $ headers hv s hs
182− i <- E.joinI $ builderToByteString $$ E.joinI $ chunk $$ iterHandle handle
183+ i <- E.joinI $ chunk $$ E.joinI $ builderToByteString $$ iterHandle handle
183184 liftIO $ B.hPutStr handle "0\r\n\r\n"
184185 return i
185186 where
186− chunk :: E.Enumeratee ByteString ByteString IO ()
187− chunk = E.concatMap $ \bs ->
188− [ B.pack $ showHex (B.length bs) " \r\n"
189− , bs
190− , "\r\n"
191− ]
187+ chunk :: E.Enumeratee Builder Builder IO ()
188+ chunk = E.map chunkedTransferEncoding -- FIXME some extra mconcat
192189
193190parseHeaderNoAttr :: ByteString -> (ByteString, ByteString)
194191parseHeaderNoAttr s =