- do teM <- readHeader itr "Transfer-Encoding"
- if reqVer == HttpVersion 1 1 then
-
- do case teM of
- Nothing -> updateRes itr $ setHeader "Transfer-Encoding" "chunked"
- Just te -> let teList = [trim isWhiteSpace x
- | x <- splitBy (== ',') (map toLower te)]
- in
- when (teList == [] || last teList /= "chunked")
- $ abortSTM InternalServerError []
- $ Just ("Transfer-Encoding must end with `chunked' "
- ++ "because this is an HTTP/1.1 request: "
- ++ te)
-
- writeItr itr itrWillChunkBody True
- else
- case fmap (map toLower) teM of
- Nothing -> return ()
- Just "identity" -> return ()
- Just te -> abortSTM InternalServerError []
- $ Just ("Transfer-Encoding must be `identity' because "
- ++ "this is an HTTP/1.0 request: "
- ++ te)
+ when (reqVer == HttpVersion 1 1)
+ $ do updateRes itr $ setHeader "Transfer-Encoding" "chunked"
+ writeItr itr itrWillChunkBody True