on master help sign in
setting isSecure of HTTP/2 correctly.
eb33f4bKazu Yamamoto
warp/Network/Wai/Handler/Warp/HTTP2.hs+4−3
@@ -24,8 +24,8 @@ import Network.Wai.Handler.Warp.Types
24
24
25----------------------------------------------------------------
25----------------------------------------------------------------
26
26
27−http2 :: Connection -> InternalInfo -> SockAddr -> S.Settings -> (BufSize -> IO ByteString) -> Application -> IO ()
27+http2 :: Connection -> Transport -> InternalInfo -> SockAddr -> S.Settings -> (BufSize -> IO ByteString) -> Application -> IO ()
28−http2 conn ii addr settings readN app =
28+http2 conn transport ii addr settings readN app =
29 H2.run conf http2server
29 H2.run conf http2server
30 where
30 where
31 conf = H2.Config {
31 conf = H2.Config {
@@ -63,12 +63,13 @@ http2 conn ii addr settings readN app =
63 logResponse h2rsp' req
63 logResponse h2rsp' req
64 return ()
64 return ()
65
65
66− toWAIRequest h2req aux = toRequest ii settings addr hdr bdylen bdy th
66+ toWAIRequest h2req aux = toRequest ii settings addr hdr bdylen bdy th secure
67 where
67 where
68 !hdr = H2.requestHeaders h2req
68 !hdr = H2.requestHeaders h2req
69 !bdy = H2.getRequestBodyChunk h2req
69 !bdy = H2.getRequestBodyChunk h2req
70 !bdylen = H2.requestBodySize h2req
70 !bdylen = H2.requestBodySize h2req
71 !th = H2.auxTimeHandle aux
71 !th = H2.auxTimeHandle aux
72+ !secure = isTransportSecure transport
72
73
73 logResponse h2rsp req = logger req st msiz
74 logResponse h2rsp req = logger req st msiz
74 where
75 where
warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+5−5
@@ -26,19 +26,19 @@ import Network.Wai.Handler.Warp.Request (getFileInfoKey, pauseTimeoutKey)
26import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath)
26import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath)
27import Network.Wai.Handler.Warp.Types
27import Network.Wai.Handler.Warp.Types
28
28
29−type ToReq = (TokenHeaderList,ValueTable) -> Maybe Int -> IO ByteString -> T.Handle -> IO Request
29+type ToReq = (TokenHeaderList,ValueTable) -> Maybe Int -> IO ByteString -> T.Handle -> Bool -> IO Request
30
30
31----------------------------------------------------------------
31----------------------------------------------------------------
32
32
33toRequest :: InternalInfo -> S.Settings -> SockAddr -> ToReq
33toRequest :: InternalInfo -> S.Settings -> SockAddr -> ToReq
34−toRequest ii settings addr ht bodylen body th = do
34+toRequest ii settings addr ht bodylen body th secure = do
35 ref <- newIORef Nothing
35 ref <- newIORef Nothing
36− toRequest' ii settings addr ref ht bodylen body th
36+ toRequest' ii settings addr ref ht bodylen body th secure
37
37
38toRequest' :: InternalInfo -> S.Settings -> SockAddr
38toRequest' :: InternalInfo -> S.Settings -> SockAddr
39 -> IORef (Maybe HTTP2Data)
39 -> IORef (Maybe HTTP2Data)
40 -> ToReq
40 -> ToReq
41−toRequest' ii settings addr ref (reqths,reqvt) bodylen body th = return req
41+toRequest' ii settings addr ref (reqths,reqvt) bodylen body th secure = return req
42 where
42 where
43 !req = Request {
43 !req = Request {
44 requestMethod = colonMethod
44 requestMethod = colonMethod
@@ -48,7 +48,7 @@ toRequest' ii settings addr ref (reqths,reqvt) bodylen body th = return req
48 , rawQueryString = query
48 , rawQueryString = query
49 , queryString = H.parseQuery query
49 , queryString = H.parseQuery query
50 , requestHeaders = headers
50 , requestHeaders = headers
51− , isSecure = True
51+ , isSecure = secure
52 , remoteHost = addr
52 , remoteHost = addr
53 , requestBody = body
53 , requestBody = body
54 , vault = vaultValue
54 , vault = vaultValue
warp/Network/Wai/Handler/Warp/Run.hs+1−1
@@ -344,7 +344,7 @@ serveConnection conn ii th origAddr transport settings app = do
344 let recvN = wrappedRecvN th istatus (settingsSlowlorisSize settings) rawRecvN
344 let recvN = wrappedRecvN th istatus (settingsSlowlorisSize settings) rawRecvN
345 -- fixme: origAddr
345 -- fixme: origAddr
346 checkTLS
346 checkTLS
347− http2 conn ii origAddr settings recvN app
347+ http2 conn transport ii origAddr settings recvN app
348 else do
348 else do
349 src <- mkSource (wrappedRecv conn th istatus (settingsSlowlorisSize settings))
349 src <- mkSource (wrappedRecv conn th istatus (settingsSlowlorisSize settings))
350 writeIORef istatus True
350 writeIORef istatus True