, completeUnconditionalHeaders
)
where
-import qualified Blaze.ByteString.Builder.Char.Utf8 as BB
import Control.Applicative
import Control.Concurrent.STM
import Control.Monad
postprocess ∷ Interaction → STM ()
postprocess itr@(Interaction {..})
= do abortOnCertainConditions itr
- writeDefaultPageIfNeeded itr
case itrRequest of
Just req → postprocessWithRequest itr req
= do resHasCType ← readTVar itrResponseHasCType
unless resHasCType
$ do writeHeader itr "Content-Type" (Just defaultPageContentType)
+ writeHeader itr "Content-Encoding" Nothing
res ← readTVar itrResponse
let page = getDefaultPage itrConfig itrRequest res
- putTMVar itrBodyToSend (BB.fromLazyText page)
+ putTMVar itrBodyToSend page
writeHeader ∷ Interaction → CIAscii → Maybe Ascii → STM ()
{-# INLINE writeHeader #-}
new ← unsafeIOToSTM $ f old
writeTVar itrResponse new
+-- FIXME: Narrow the use of IO monad!
completeUnconditionalHeaders ∷ Config → Response → IO Response
completeUnconditionalHeaders conf = (compDate =≪) ∘ compServer
where