X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FHttpd.hs;h=2b81de1f88be64d5c12cc51f22be5b867347dbe5;hp=b8e1845dd32e41edfb966dbc6f460ba936948b90;hb=858129cb755aa09da2b7bd758efb8519f2c89103;hpb=5b255535f2c7d2a6d4622ad164b31e63746b906e diff --git a/Network/HTTP/Lucu/Httpd.hs b/Network/HTTP/Lucu/Httpd.hs index b8e1845..2b81de1 100644 --- a/Network/HTTP/Lucu/Httpd.hs +++ b/Network/HTTP/Lucu/Httpd.hs @@ -49,7 +49,8 @@ import System.Posix.Signals -- > } runHttpd :: Config -> ResTree -> IO () runHttpd cnf tree - = withSocketsDo $ + = cnf `seq` tree `seq` + withSocketsDo $ do installHandler sigPIPE Ignore Nothing so <- listenOn (cnfServerPort cnf) loop so @@ -58,7 +59,8 @@ runHttpd cnf tree loop so -- 本當は Network.accept を使ひたいが、このアクションは勝手に -- リモートのIPを逆引きするので、使へない。 - = do (h, addr) <- accept' so + = so `seq` + do (h, addr) <- accept' so tQueue <- newInteractionQueue readerTID <- forkIO $ requestReader cnf tree h addr tQueue writerTID <- forkIO $ responseWriter cnf h tQueue readerTID @@ -66,6 +68,7 @@ runHttpd cnf tree accept' :: Socket -> IO (Handle, So.SockAddr) accept' soSelf - = do (soPeer, addr) <- So.accept soSelf + = soSelf `seq` + do (soPeer, addr) <- So.accept soSelf hPeer <- So.socketToHandle soPeer ReadWriteMode return (hPeer, addr)