@@ -27,7 +27,7 @@ import Network
2727 ( listenOn, accept, sClose, PortID(PortNumber), Socket
2828 , withSocketsDo)
2929import Control.Exception (bracket, finally, Exception)
30−import System.IO (Handle, hClose, hFlush)
30+import System.IO (Handle, hClose)
3131import Control.Concurrent (forkIO)
3232import Control.Monad (unless)
3333import Data.Maybe (isJust, fromJust, fromMaybe)
@@ -61,36 +61,10 @@ serveConnection port app conn remoteHost' =
6161 serveConnection'
6262 (hClose conn)
6363 where
64− serveConnection' = do
65− disconnect <- serveOneRequest'
66− hFlush conn
67− case disconnect of
68− False -> serveConnection'
69− True -> return ()
70−
71− serveOneRequest' = do
72− env <- hParseRequest port conn remoteHost'
73− res <- app env
74− sendResponse (httpVersion env) conn res
75− return $ shouldConnectionClose env res
76−
77−reqConnectionHeader :: RequestHeader
78−reqConnectionHeader = RequestHeader $ B.pack "Connection"
79−
80−resConnectionHeader :: ResponseHeader
81−resConnectionHeader = ResponseHeader $ B.pack "Connection"
82−
83−shouldConnectionClose :: Request -> Response -> Bool
84−shouldConnectionClose req res = (isClose req_conn)
85− || (isClose res_conn)
86−
87− where
88− isClose v = case v of
89− Just x -> (B.unpack x) == "close"
90− Nothing -> False
91−
92− req_conn = lookup reqConnectionHeader $ requestHeaders req
93− res_conn = lookup resConnectionHeader $ responseHeaders res
64+ serveConnection' = do
65+ env <- hParseRequest port conn remoteHost'
66+ res <- app env
67+ sendResponse (httpVersion env) conn res
9468
9569hParseRequest :: Port -> Handle -> String -> IO Request
9670hParseRequest port conn remoteHost' = do