on master help sign in
making log action strict.
commit45caf2e20dabf5f7bde31f4c4f42f705b626b6d8 authorKazu Yamamoto <kazu@iij.ad.jp> dateFri 11 Dec 2015, 11:22 (11 years ago) parentbaca2c1
1 file changed+11−7
warp/Network/Wai/Handler/Warp/HTTP2/Worker.hs+11−7
warp/Network/Wai/Handler/Warp/HTTP2/Worker.hs+11−7
@@ -4,6 +4,7 @@
44{-# LANGUAGE CPP #-}
55{-# LANGUAGE ScopedTypeVariables #-}
66{-# LANGUAGE OverloadedStrings #-}
7+{-# LANGUAGE BangPatterns #-}
78
89module Network.Wai.Handler.Warp.HTTP2.Worker (
910 Responder
@@ -62,15 +63,16 @@ response ii settings Context{outputQ} mgr tconf th strm req rsp
6263 ResponseRaw _ _ -> error "HTTP/2 does not support ResponseRaw"
6364 | otherwise = responseNoBody s0 hs0
6465 where
65− isHead = requestMethod req == H.methodHead
66− s0 = responseStatus rsp
67− hs0 = responseHeaders rsp
68− logger = S.settingsLogger settings req
66+ !isHead = requestMethod req == H.methodHead
67+ !s0 = responseStatus rsp
68+ !hs0 = responseHeaders rsp
69+ !logger = S.settingsLogger settings req
6970
7071 responseNoBody s hs = responseBuilderBody s hs mempty
7172
7273 responseBuilderBody s hs bdy = do
73− writeIORef (streamLogger strm) (logger s Nothing)
74+ let !logact = logger s Nothing
75+ writeIORef (streamLogger strm) logact
7476 setThreadContinue tconf True
7577 let rsp' = ResponseBuilder s hs bdy
7678 out = OResponse strm rsp' (Oneshot True)
@@ -90,7 +92,8 @@ response ii settings Context{outputQ} mgr tconf th strm req rsp
9092 responseFile2XX s hs path mpart
9193 | isHead = responseNoBody s hs
9294 | otherwise = do
93− writeIORef (streamLogger strm) (logger s (filePartByteCount <$> mpart))
95+ let !logact = logger s (filePartByteCount <$> mpart)
96+ writeIORef (streamLogger strm) logact
9497 setThreadContinue tconf True
9598 let rsp' = ResponseFile s hs path mpart
9699 out = OResponse strm rsp' (Oneshot True)
@@ -104,7 +107,8 @@ response ii settings Context{outputQ} mgr tconf th strm req rsp
104107 body = byteString "File not found"
105108
106109 responseStreaming strmbdy = do
107− writeIORef (streamLogger strm) (logger s0 Nothing)
110+ let !logact = logger s0 Nothing
111+ writeIORef (streamLogger strm) logact
108112 -- We must not exit this WAI application.
109113 -- If the application exits, streaming would be also closed.
110114 -- So, this work occupies this thread.