on master help sign in
setting vault.
0533999Kazu Yamamoto
warp/Network/Wai/Handler/Warp/HTTP2.hs+1−1
@@ -38,7 +38,7 @@ http2 conn ii addr transport settings readN app = do
38 -- fixme: hard coding: 10
38 -- fixme: hard coding: 10
39 replicateM_ 10 $ spawnAction mgr
39 replicateM_ 10 $ spawnAction mgr
40 -- Receiver
40 -- Receiver
41− let mkreq = mkRequest settings addr
41+ let mkreq = mkRequest ii settings addr
42 tid <- forkIO $ frameReceiver ctx mkreq readN
42 tid <- forkIO $ frameReceiver ctx mkreq readN
43 -- Sender
43 -- Sender
44 -- frameSender is the main thread because it ensures to send
44 -- frameSender is the main thread because it ensures to send
warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+12−4
@@ -19,6 +19,7 @@ import qualified Data.ByteString.Char8 as B8
19import Data.CaseInsensitive (mk)
19import Data.CaseInsensitive (mk)
20import Data.IORef (IORef, readIORef, newIORef, writeIORef)
20import Data.IORef (IORef, readIORef, newIORef, writeIORef)
21import Data.Maybe (isJust)
21import Data.Maybe (isJust)
22+import qualified Data.Vault.Lazy as Vault
22#if __GLASGOW_HASKELL__ < 709
23#if __GLASGOW_HASKELL__ < 709
23import Data.Monoid (mempty)
24import Data.Monoid (mempty)
24#endif
25#endif
@@ -28,10 +29,13 @@ import Network.HTTP.Types (RequestHeaders,hRange)
28import qualified Network.HTTP.Types as H
29import qualified Network.HTTP.Types as H
29import Network.Socket (SockAddr)
30import Network.Socket (SockAddr)
30import Network.Wai
31import Network.Wai
32+import Network.Wai.Internal (Request(..))
31import Network.Wai.Handler.Warp.HTTP2.Types
33import Network.Wai.Handler.Warp.HTTP2.Types
32import Network.Wai.Handler.Warp.ReadInt
34import Network.Wai.Handler.Warp.ReadInt
35+import Network.Wai.Handler.Warp.Request (pauseTimeoutKey, getFileInfoKey)
36+import Network.Wai.Handler.Warp.Types (InternalInfo(..))
33import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath)
37import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath)
34−import Network.Wai.Internal (Request(..))
38+import qualified Network.Wai.Handler.Warp.Timeout as Timeout
35
39
36data ValidHeaders = ValidHeaders {
40data ValidHeaders = ValidHeaders {
37 vhMethod :: ByteString
41 vhMethod :: ByteString
@@ -43,8 +47,8 @@ data ValidHeaders = ValidHeaders {
43
47
44type MkReq = ValidHeaders -> IO ByteString -> Request
48type MkReq = ValidHeaders -> IO ByteString -> Request
45
49
46−mkRequest :: S.Settings -> SockAddr -> MkReq
50+mkRequest :: InternalInfo -> S.Settings -> SockAddr -> MkReq
47−mkRequest settings addr (ValidHeaders m p ma _ hdr) body = req
51+mkRequest ii settings addr (ValidHeaders m p ma _ hdr) body = req
48 where
52 where
49 (unparsedPath,query) = B8.break (=='?') p
53 (unparsedPath,query) = B8.break (=='?') p
50 path = H.extractPath unparsedPath
54 path = H.extractPath unparsedPath
@@ -61,11 +65,15 @@ mkRequest settings addr (ValidHeaders m p ma _ hdr) body = req
61 , isSecure = True
65 , isSecure = True
62 , remoteHost = addr
66 , remoteHost = addr
63 , requestBody = body
67 , requestBody = body
64− , vault = mempty
68+ , vault = vaultValue
65 , requestBodyLength = ChunkedBody -- fixme
69 , requestBodyLength = ChunkedBody -- fixme
66 , requestHeaderHost = ma
70 , requestHeaderHost = ma
67 , requestHeaderRange = lookup hRange hdr
71 , requestHeaderRange = lookup hRange hdr
68 }
72 }
73+ th = threadHandle ii
74+ vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th)
75+ $ Vault.insert getFileInfoKey (fileInfo ii)
76+ Vault.empty
69
77
70----------------------------------------------------------------
78----------------------------------------------------------------
71
79