]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Httpd.hs
Optimized as possible as I can.
[Lucu.git] / Network / HTTP / Lucu / Httpd.hs
index b8e1845dd32e41edfb966dbc6f460ba936948b90..2b81de1f88be64d5c12cc51f22be5b867347dbe5 100644 (file)
@@ -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)