import Control.Concurrent
import Control.Concurrent.STM
import Control.Exception
+import Control.Monad hiding (mapM_)
import Control.Monad.IO.Class
-import Control.Monad.Reader
+import Control.Monad.Reader (ReaderT, runReaderT, ask)
import Control.Monad.Unicode
import Data.Ascii (Ascii, CIAscii)
import qualified Data.Ascii as A
import qualified Data.ByteString as Strict
-import Data.List
+import Data.Collections
+import Data.List (intersperse, nub)
import Data.Maybe
import Data.Monoid
import Data.Monoid.Unicode
#if defined(HAVE_SSL)
import OpenSSL.X509
#endif
-import Prelude hiding (catch)
+import Prelude hiding (catch, concat, mapM_, tail)
import Prelude.Unicode
import System.IO
-- in the response. Hooray!
flip runResource ni $
do setStatus $ aboStatus abo
- mapM_ (uncurry setHeader) $ H.fromHeaders $ aboHeaders abo
+ mapM_ (uncurry setHeader) (aboHeaders abo)
setHeader "Content-Type" defaultPageContentType
deleteHeader "Content-Encoding"
putBuilder $ abortPage niConfig (Just niRequest) res abo
putBuilder ∷ Builder → Resource ()
putBuilder b = liftIO ∘ atomically ∘ go =≪ getInteraction
where
+ -- FIXME: should see if resCanHaveBody.
go ∷ NormalInteraction → STM ()
go ni@(NI {..})
= do driftTo' ni SendingBody