X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FDefaultPage.hs;h=cbbf674718e922957ce57389ae32aa8454b9b87a;hb=f62b6f07bbf1eefcf552163d8f7daa6e0862ed5d;hp=be369cc1c88f77334593067705ecbc2e32fcfb86;hpb=50e8fe7af585a8d33d93b3721be8f8f01905b891;p=Lucu.git diff --git a/Network/HTTP/Lucu/DefaultPage.hs b/Network/HTTP/Lucu/DefaultPage.hs index be369cc..cbbf674 100644 --- a/Network/HTTP/Lucu/DefaultPage.hs +++ b/Network/HTTP/Lucu/DefaultPage.hs @@ -19,7 +19,7 @@ import Network.HTTP.Lucu.Headers import Network.HTTP.Lucu.Interaction import Network.HTTP.Lucu.Request import Network.HTTP.Lucu.Response -import Network.URI +import Network.URI hiding (path) import System.IO.Unsafe import Text.XML.HXT.Arrow.WriteDocument import Text.XML.HXT.Arrow.XmlArrow @@ -29,9 +29,8 @@ import Text.XML.HXT.DOM.XmlKeywords getDefaultPage :: Config -> Maybe Request -> Response -> String -getDefaultPage conf req res - = conf `seq` req `seq` res `seq` - let msgA = getMsg req res +getDefaultPage !conf !req !res + = let msgA = getMsg req res in unsafePerformIO $ do [xmlStr] <- runX ( mkDefaultPage conf (resStatus res) msgA @@ -42,12 +41,9 @@ getDefaultPage conf req res writeDefaultPage :: Interaction -> STM () -writeDefaultPage itr - = itr `seq` - do wroteHeader <- readTVar (itrWroteHeader itr) - - -- Content-Type が正しくなければ補完できない。 - res <- readItr itr itrResponse id +writeDefaultPage !itr + -- Content-Type が正しくなければ補完できない。 + = do res <- readItr itr itrResponse id when (getHeader (C8.pack "Content-Type") res == Just defaultPageContentType) $ do reqM <- readItr itr itrRequest id @@ -59,9 +55,8 @@ writeDefaultPage itr mkDefaultPage :: (ArrowXml a) => Config -> StatusCode -> a b XmlTree -> a b XmlTree -mkDefaultPage conf status msgA - = conf `seq` status `seq` msgA `seq` - let (# sCode, sMsg #) = statusCode status +mkDefaultPage !conf !status !msgA + = let (# sCode, sMsg #) = statusCode status sig = C8.unpack (cnfServerSoftware conf) ++ " at " ++ C8.unpack (cnfServerHost conf) @@ -87,9 +82,8 @@ mkDefaultPage conf status msgA {-# SPECIALIZE mkDefaultPage :: Config -> StatusCode -> IOSArrow b XmlTree -> IOSArrow b XmlTree #-} getMsg :: (ArrowXml a) => Maybe Request -> Response -> a b XmlTree -getMsg req res - = req `seq` res `seq` - case resStatus res of +getMsg !req !res + = case resStatus res of -- 1xx は body を持たない -- 2xx の body は補完しない