on master help sign in
Fixed HTTP 1.0 non-chunked response
718e7b7Michael Snoyman
Network/Wai/Handler/Warp.hs+6−2
@@ -197,11 +197,15 @@ isChunked = (==) http11
197sendResponse :: HttpVersion -> Handle -> Response -> IO ()
197sendResponse :: HttpVersion -> Handle -> Response -> IO ()
198sendResponse hv handle res = do
198sendResponse hv handle res = do
199 responseEnumerator res $ \s hs ->
199 responseEnumerator res $ \s hs ->
200− E.joinI $ chunk
200+ chunk'
201− $$ E.enumList 1 [headers hv s hs]
201+ $ E.enumList 1 [headers hv s hs]
202 $$ E.joinI $ builderToByteString
202 $$ E.joinI $ builderToByteString
203 $$ iterHandle handle
203 $$ iterHandle handle
204 where
204 where
205+ chunk' i =
206+ if isChunked hv
207+ then E.joinI $ chunk $$ i
208+ else i
205 chunk :: E.Enumeratee Builder Builder IO ()
209 chunk :: E.Enumeratee Builder Builder IO ()
206 chunk = E.checkDone $ E.continue . step
210 chunk = E.checkDone $ E.continue . step
207 step k E.EOF = k (E.Chunks [chunkedTransferTerminator]) >>== return
211 step k E.EOF = k (E.Chunks [chunkedTransferTerminator]) >>== return