on master help sign in
Merge pull request #84 from tsuraan/master

wai-extra form processing speedup

commitf7045215a89a54bacb46b47bc1771d0f62bcb1ad authorFelipe Lessa <felipe.lessa@gmail.com> dateThu 14 Jun 2012, 04:41 (14 years ago) parentd1b3a6fcc4fa1b
2 files changed+9−1
wai-extra/Network/Wai/Parse.hs+8−1 wai-extra/wai-extra.cabal+1
wai-extra/Network/Wai/Parse.hs+8−1
@@ -29,6 +29,7 @@ module Network.Wai.Parse
2929#endif
3030 ) where
3131
32+import qualified Data.ByteString.Search as Search
3233import qualified Data.ByteString as S
3334import qualified Data.ByteString.Lazy as L
3435import qualified Data.ByteString.Char8 as S8
@@ -252,8 +253,14 @@ data Bound = FoundBound S.ByteString S.ByteString
252253 deriving (Eq, Show)
253254
254255findBound :: S.ByteString -> S.ByteString -> Bound
255−findBound b bs = go [0..S.length bs - 1]
256+findBound b bs = handleBreak $ Search.breakOn b bs
256257 where
258+ handleBreak (h, t)
259+ | S.null t = go [lowBound..S.length bs - 1]
260+ | otherwise = FoundBound h $ S.drop (S.length b) t
261+
262+ lowBound = max 0 $ S.length bs - S.length b
263+
257264 go [] = NoBound
258265 go (i:is)
259266 | mismatch [0..S.length b - 1] [i..S.length bs - 1] = go is
wai-extra/wai-extra.cabal+1
@@ -39,6 +39,7 @@ Library
3939 , blaze-builder-conduit >= 0.4 && < 0.5
4040 , ansi-terminal
4141 , resourcet >= 0.3 && < 0.4
42+ , stringsearch >= 0.3 && < 0.4
4243
4344 Exposed-modules: Network.Wai.Handler.CGI
4445 Network.Wai.Middleware.AcceptOverride