on master help sign in
Revert "inserting concatenated cookie after pseudo headers. (#454)"

This reverts commit c4eb3f94df54ca3e5a80ed8e2c5ababd1f572eec.

commitb10ce91998db9a330958f896b341e168178f2de8 authorKazu Yamamoto <kazu@iij.ad.jp> dateMon 19 Oct 2015, 22:15 (11 years ago) parentc4eb3f9
3 files changed+6−18
warp/Network/Wai/Handler/Warp/HTTP2/HPACK.hs+1−9 warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+5−1 warp/Network/Wai/Handler/Warp/HTTP2/Types.hs−8
warp/Network/Wai/Handler/Warp/HTTP2/HPACK.hs+1−9
@@ -64,16 +64,8 @@ hpackDecodeHeader hdrblk Context{decodeDynamicTable} = do
6464-- [("foo","bar")]
6565-- >>> concatCookie [("cookie","a=b"),("foo","bar"),("cookie","c=d"),("cookie","e=f")]
6666-- [("cookie","a=b; c=d; e=f"),("foo","bar")]
67−-- >>> concatCookie [(":pseudo","pseudo"),("cookie","a=b"),("foo","bar"),("cookie","c=d"),("cookie","e=f")]
68−-- [(":pseudo","pseudo"),("cookie","a=b; c=d; e=f"),("foo","bar")]
6967concatCookie :: HeaderList -> HeaderList
7068concatCookie hdr = case L.partition (\x -> fst x == "cookie") hdr of
7169 ([],_) -> hdr
7270 (cookies,others) -> let cookieValue = B.intercalate "; " (map snd cookies)
73− in insertAfterPseudo ("cookie",cookieValue) others
74−
75−insertAfterPseudo :: Header -> HeaderList -> HeaderList
76−insertAfterPseudo x [] = [x]
77−insertAfterPseudo x yys@(y:ys)
78− | isPseudo (fst y) = y : insertAfterPseudo x ys
79− | otherwise = x : yys
71+ in ("cookie",cookieValue) : others
warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+5−1
@@ -22,7 +22,7 @@ import Data.Maybe (isJust)
2222#if __GLASGOW_HASKELL__ < 709
2323import Data.Monoid (mempty)
2424#endif
25−import Data.Word8 (isUpper)
25+import Data.Word8 (isUpper,_colon)
2626import Network.HPACK
2727import Network.HTTP.Types (RequestHeaders,hRange)
2828import qualified Network.HTTP.Types as H
@@ -119,6 +119,10 @@ validateHeaders hs = case pseudo hs (emptyPseudo,id) of
119119 Nothing -> normal kvs (p, b . ((mk k,v) :))
120120 Just _ -> Nothing
121121
122+ isPseudo "" = False
123+ isPseudo k = BS.head k == _colon
124+
125+
122126----------------------------------------------------------------
123127
124128newReadBody :: TQueue ByteString -> IO (IO ByteString)
warp/Network/Wai/Handler/Warp/HTTP2/Types.hs−8
@@ -17,7 +17,6 @@ import Data.ByteString (ByteString)
1717import qualified Data.ByteString as BS
1818import Data.IntMap.Strict (IntMap, IntMap)
1919import qualified Data.IntMap.Strict as M
20−import Data.Word8 (_colon)
2120import qualified Network.HTTP.Types as H
2221import Network.Wai (Request, FilePart)
2322import Network.Wai.HTTP2 (PushPromise, Trailers)
@@ -309,10 +308,3 @@ enqueueOrSpawnTemporaryWaiter strm outQ out = do
309308 else do
310309 pri <- readIORef $ streamPriority strm
311310 enqueue outQ out pri
312−
313−----------------------------------------------------------------
314−
315−{-# INLINE isPseudo #-}
316−isPseudo :: ByteString -> Bool
317−isPseudo "" = False
318−isPseudo k = BS.head k == _colon