on master help sign in
using proper name according to RFC.
commitb376316eb8528c27fb7abd0716a5c470f5939929 authorKazu Yamamoto <kazu@iij.ad.jp> dateFri 1 Nov 2013, 13:04 (13 years ago) parent0745a49
1 file changed+12−12
warp/Network/Wai/Handler/Warp/RequestHeader.hs+12−12
warp/Network/Wai/Handler/Warp/RequestHeader.hs+12−12
@@ -22,16 +22,16 @@ parseHeaderLines :: [ByteString]
2222 )
2323parseHeaderLines [] = throwIO $ NotEnoughLines []
2424parseHeaderLines (firstLine:otherLines) = do
25− (method, path', query, httpversion) <- parseFirst firstLine
25+ (method, path', query, httpversion) <- parseRequestLine firstLine
2626 let path = parseRpath path'
27− hdr = map parseHeaderNoAttr otherLines
27+ hdr = map parseHeader otherLines
2828 return (method, path, query, httpversion, hdr)
2929
3030----------------------------------------------------------------
3131
32−parseFirst :: ByteString
32+parseRequestLine :: ByteString
3333 -> IO (ByteString, ByteString, ByteString, H.HttpVersion)
34−parseFirst s =
34+parseRequestLine s =
3535 case filter (not . S.null) $ S.splitWith (\c -> c == 32 || c == 9) s of -- ' '
3636 (method:query:http'') -> do
3737 let http' = S.concat http''
@@ -48,16 +48,16 @@ parseFirst s =
4848
4949----------------------------------------------------------------
5050
51−parseHeaderNoAttr :: ByteString -> H.Header
52−parseHeaderNoAttr s =
53− let (k, rest) = S.breakByte 58 s -- ':'
54− rest' = S.dropWhile (\c -> c == 32 || c == 9) $ S.drop 1 rest
55− in (CI.mk k, rest')
56−
57−----------------------------------------------------------------
58−
5951parseRpath :: ByteString -> ByteString
6052parseRpath rpath'
6153 | S.null rpath' = "/"
6254 | "http://" `S.isPrefixOf` rpath' = snd $ S.breakByte 47 $ S.drop 7 rpath'
6355 | otherwise = rpath'
56+
57+----------------------------------------------------------------
58+
59+parseHeader :: ByteString -> H.Header
60+parseHeader s =
61+ let (k, rest) = S.breakByte 58 s -- ':'
62+ rest' = S.dropWhile (\c -> c == 32 || c == 9) $ S.drop 1 rest
63+ in (CI.mk k, rest')