import Network.HTTP.Lucu.Config
import Network.HTTP.Lucu.Chunk
import Network.HTTP.Lucu.DefaultPage
+import Network.HTTP.Lucu.HandleLike
import Network.HTTP.Lucu.Interaction
import Network.HTTP.Lucu.Parser
import Network.HTTP.Lucu.Postprocess
import Network.HTTP.Lucu.Response
import Network.HTTP.Lucu.Resource.Tree
import Prelude hiding (catch)
-import System.IO
+import System.IO (stderr)
-requestReader :: Config -> ResTree -> [FallbackHandler] -> Handle -> SockAddr -> InteractionQueue -> IO ()
+requestReader :: HandleLike h => Config -> ResTree -> [FallbackHandler] -> h -> SockAddr -> InteractionQueue -> IO ()
requestReader !cnf !tree !fbs !h !addr !tQueue
- = do input <- B.hGetContents h
+ = do input <- hGetLBS h
acceptRequest input
`catches`
[ Handler (( \ _ -> return () ) :: IOException -> IO ())
acceptNonparsableRequest :: StatusCode -> IO ()
acceptNonparsableRequest status
= {-# SCC "acceptNonparsableRequest" #-}
- do itr <- newInteraction cnf addr Nothing
+ do itr <- newInteraction cnf addr Nothing Nothing
atomically $ do updateItr itr itrResponse
$ \ res -> res {
resStatus = status
acceptParsableRequest :: Request -> ByteString -> IO ()
acceptParsableRequest req input
= {-# SCC "acceptParsableRequest" #-}
- do itr <- newInteraction cnf addr (Just req)
+ do cert <- hGetPeerCert h
+ itr <- newInteraction cnf addr cert (Just req)
action
<- atomically $
do preprocess itr