@@ -83,13 +83,21 @@ hpackDecodeHeader hdrblk Context{..} = do
8383{-# INLINE checkRequestHeader #-}
8484checkRequestHeader :: ValueTable -> Bool
8585checkRequestHeader reqvt
86− | getHeaderValue tokenStatus reqvt /= Nothing = False
87− | getHeaderValue tokenPath reqvt == Nothing = False
88− | getHeaderValue tokenMethod reqvt == Nothing = False
89− | getHeaderValue tokenAuthority reqvt == Nothing = False
90− | getHeaderValue tokenConnection reqvt /= Nothing = False
91− | just (getHeaderValue tokenTE reqvt) (/= "trailers") = False
92− | otherwise = True
86+ | mStatus /= Nothing = False
87+ | mMethod == Nothing = False
88+ | mAuthority == Nothing = False
89+ | mConnection /= Nothing = False
90+ | just mTE (/= "trailers") = False
91+ | just mMethod (== "CONNECT") = mPath == Nothing && mScheme == Nothing
92+ | otherwise = mPath /= Nothing
93+ where
94+ mStatus = getHeaderValue tokenStatus reqvt
95+ mScheme = getHeaderValue tokenScheme reqvt
96+ mPath = getHeaderValue tokenPath reqvt
97+ mMethod = getHeaderValue tokenMethod reqvt
98+ mAuthority = getHeaderValue tokenAuthority reqvt
99+ mConnection = getHeaderValue tokenConnection reqvt
100+ mTE = getHeaderValue tokenTE reqvt
93101
94102{-# INLINE just #-}
95103just :: Maybe a -> (a -> Bool) -> Bool