@@ -88,7 +88,7 @@ import Data.Maybe (fromMaybe, isJust)
8888
8989import Data.Typeable (Typeable)
9090
91−import Control.Monad.Trans.Resource (ResourceT, runResourceT)
91+import Data.Conduit (ResourceT, runResourceT)
9292import qualified Data.Conduit as C
9393import qualified Data.Conduit.List as CL
9494import Data.Conduit.Blaze (builderToByteString)
@@ -294,7 +294,7 @@ serveConnection settings th onException port app conn remoteHost' =
294294 intercept fromClient conn
295295
296296parseRequest :: Connection -> Port -> SockAddr
297− -> C.BufferedSource IO S.ByteString
297+ -> C.BufferedSource (ResourceT IO) S.ByteString
298298 -> ResourceT IO Request
299299parseRequest conn port remoteHost' src = do
300300 headers' <- src C.$$ takeHeaders
@@ -333,7 +333,7 @@ parseRequest' :: Connection
333333 -> Port
334334 -> [ByteString]
335335 -> SockAddr
336− -> C.BufferedSource IO S.ByteString
336+ -> C.BufferedSource (ResourceT IO) S.ByteString
337337 -> ResourceT IO Request
338338parseRequest' _ _ [] _ _ = throwIO $ NotEnoughLines []
339339parseRequest' conn port (firstLine:otherLines) remoteHost' src = do
@@ -577,7 +577,7 @@ sendResponse th req conn r = sendResponse' r
577577 -- FIXME perhaps alloca a buffer per thread and reuse that in all
578578 -- functions below. Should lessen greatly the GC burden (I hope)
579579 needsChunked' = needsChunked hs
580− chunk :: C.Conduit Builder IO Builder
580+ chunk :: C.Conduit Builder (ResourceT IO) Builder
581581 chunk = C.Conduit
582582 { C.conduitPush = push
583583 , C.conduitClose = close
@@ -596,7 +596,7 @@ parseHeaderNoAttr s =
596596 else rest
597597 in (CI.mk k, rest')
598598
599−connSource :: Connection -> T.Handle -> C.Source IO ByteString
599+connSource :: Connection -> T.Handle -> C.Source (ResourceT IO) ByteString
600600connSource Connection { connRecv = recv } th =
601601 src
602602 where
@@ -612,7 +612,7 @@ connSource Connection { connRecv = recv } th =
612612 }
613613
614614-- | Use 'connSendAll' to send this data while respecting timeout rules.
615−connSink :: Connection -> T.Handle -> C.Sink B.ByteString IO ()
615+connSink :: Connection -> T.Handle -> C.Sink B.ByteString (ResourceT IO) ()
616616connSink Connection { connSendAll = send } th =
617617 C.SinkData push close
618618 where
@@ -642,7 +642,7 @@ data Settings = Settings
642642 , settingsHost :: HostPreference -- ^ Default value: HostIPv4
643643 , settingsOnException :: SomeException -> IO () -- ^ What to do with exceptions thrown by either the application or server. Default: ignore server-generated exceptions (see 'InvalidRequest') and print application-generated applications to stderr.
644644 , settingsTimeout :: Int -- ^ Timeout value in seconds. Default value: 30
645− , settingsIntercept :: Request -> Maybe (C.BufferedSource IO S.ByteString -> Connection -> ResourceT IO ())
645+ , settingsIntercept :: Request -> Maybe (C.BufferedSource (ResourceT IO) S.ByteString -> Connection -> ResourceT IO ())
646646 , settingsManager :: Maybe Manager -- ^ Use an existing timeout manager instead of spawning a new one. If used, 'settingsTimeout' is ignored. Default is 'Nothing'
647647 }
648648
@@ -708,7 +708,7 @@ data THStatus = THStatus
708708 BSEndoList -- previously parsed lines
709709 BSEndo -- bytestrings to be prepended
710710
711−takeHeaders :: C.Sink ByteString IO [ByteString]
711+takeHeaders :: C.Sink ByteString (ResourceT IO) [ByteString]
712712takeHeaders =
713713 C.sinkState (THStatus 0 id id) takeHeadersPush close
714714 where