on master help sign in
Merge pull request #9 from kazu-yamamoto/closed-by-peer

adding ConnectionClosedByPeer.

commit0b7aafa83f4cdc8c067240fb1180f0618995931b authorMichael Snoyman <michael@snoyman.com> dateSat 10 Sep 2011, 10:53 (15 years ago) parentd6dbb09f49c6e6
1 file changed+7−6
warp/Network/Wai/Handler/Warp.hs+7−6
warp/Network/Wai/Handler/Warp.hs+7−6
@@ -221,6 +221,7 @@ data InvalidRequest =
221221 | BadFirstLine String
222222 | NonHttp
223223 | IncompleteHeaders
224+ | ConnectionClosedByPeer
224225 | OverLargeHeader
225226 deriving (Show, Typeable, Eq)
226227instance Exception InvalidRequest
@@ -499,7 +500,7 @@ defaultSettings = Settings
499500
500501takeHeaders :: E.Iteratee ByteString IO [ByteString]
501502takeHeaders = do
502− !x <- forceHead
503+ !x <- forceHead ConnectionClosedByPeer
503504 takeHeaders' 0 id id x
504505
505506{-# INLINE takeHeaders #-}
@@ -517,7 +518,7 @@ takeHeaders' !len !lines !prepend !bs = do
517518 -- no newline. prepend entire bs to next line
518519 !Nothing -> {-# SCC "takeHeaders'.noNewline" #-} do
519520 let !len' = len + bsLen
520− !more <- forceHead
521+ !more <- forceHead IncompleteHeaders
521522 takeHeaders' len' lines (prepend . (:) bs) more
522523 Just !nl -> {-# SCC "takeHeaders'.newline" #-} do
523524 let !end = nl
@@ -546,15 +547,15 @@ takeHeaders' !len !lines !prepend !bs = do
546547 !more <- {-# SCC "takeHeaders'.more" #-}
547548 if start < bsLen
548549 then return $! SU.unsafeDrop start bs
549− else forceHead
550+ else forceHead IncompleteHeaders
550551 {-# SCC "takeHeaders'.takeMore" #-} takeHeaders' len' lines' id more
551552{-# INLINE takeHeaders' #-}
552553
553−forceHead :: E.Iteratee ByteString IO ByteString
554−forceHead = do
554+forceHead :: InvalidRequest -> E.Iteratee ByteString IO ByteString
555+forceHead err = do
555556 !mx <- EL.head
556557 case mx of
557− !Nothing -> E.throwError IncompleteHeaders
558+ !Nothing -> E.throwError err
558559 Just !x -> return x
559560{-# INLINE forceHead #-}
560561