postprocessWithRequest ∷ NormalInteraction → STM ()
postprocessWithRequest ni@(NI {..})
- = do willDiscardBody ← readTVar niWillDiscardBody
- canHaveBody ← if willDiscardBody then
- return False
- else
- resCanHaveBody <$> readTVar niResponse
-
- updateRes ni
+ = do updateRes ni
$ deleteHeader "Content-Length"
∘ deleteHeader "Transfer-Encoding"
+ canHaveBody ← resCanHaveBody <$> readTVar niResponse
if canHaveBody then
- do when niWillChunkBody $
- writeHeader ni "Transfer-Encoding" (Just "chunked")
- writeDefaultPageIfNeeded ni
- else
- do writeTVar niWillDiscardBody True
- -- These headers make sense for HEAD requests even
- -- when there won't be a response entity body.
+ do when niWillChunkBody
+ $ writeHeader ni "Transfer-Encoding" (Just "chunked")
when (reqMethod niRequest ≢ HEAD)
- $ updateRes ni
- $ deleteHeader "Content-Type"
- ∘ deleteHeader "Etag"
- ∘ deleteHeader "Last-Modified"
+ $ writeDefaultPageIfNeeded ni
+ else
+ -- These headers make sense for HEAD requests even when
+ -- there won't be a response entity body.
+ when (reqMethod niRequest ≢ HEAD)
+ $ updateRes ni
+ $ deleteHeader "Content-Type"
+ ∘ deleteHeader "Etag"
+ ∘ deleteHeader "Last-Modified"
hasConnClose ← (≡ Just "close") <$> readCIHeader ni "Connection"
willClose ← readTVar niWillClose