warp 2.0.2.1 → 2.0.3
raw patch · 6 files changed
+20/−7 lines, 6 files
Files
- Network/Wai/Handler/Warp.hs +1/−0
- Network/Wai/Handler/Warp/Request.hs +6/−4
- Network/Wai/Handler/Warp/RequestHeader.hs +2/−1
- Network/Wai/Handler/Warp/Run.hs +1/−1
- Network/Wai/Handler/Warp/Settings.hs +9/−0
- warp.cabal +1/−1
Network/Wai/Handler/Warp.hs view
@@ -36,6 +36,7 @@ , settingsManager , settingsFdCacheDuration , settingsBeforeMainLoop+ , settingsNoParsePath -- * Data types , HostPreference (..) , Port
Network/Wai/Handler/Warp/Request.hs view
@@ -26,6 +26,7 @@ import Network.Wai.Handler.Warp.Header import Network.Wai.Handler.Warp.ReadInt import Network.Wai.Handler.Warp.RequestHeader+import Network.Wai.Handler.Warp.Settings (Settings, settingsNoParsePath) import qualified Network.Wai.Handler.Warp.Timeout as Timeout import Network.Wai.Handler.Warp.Types import Network.Wai.Internal@@ -41,7 +42,8 @@ -- | Receiving a HTTP request from 'Connection' and parsing its header -- to create 'Request'.-recvRequest :: Connection+recvRequest :: Settings+ -> Connection -> InternalInfo -> SockAddr -- ^ Peer's address. -> Source IO ByteString -- ^ Where HTTP request comes from.@@ -52,9 +54,9 @@ -- 'IndexedHeader' of HTTP request for internal use, and -- leftover source (i.e. body and other HTTP reqeusts in HTTP pipelining). -recvRequest conn ii addr src0 = do+recvRequest settings conn ii addr src0 = do (src, hdrlines) <- src0 $$+ headerLines- (method, path, query, httpversion, hdr) <- parseHeaderLines hdrlines+ (method, unparsedPath, path, query, httpversion, hdr) <- parseHeaderLines hdrlines let idxhdr = indexRequestHeader hdr expect = idxhdr ! idxExpect cl = idxhdr ! idxContentLength@@ -65,7 +67,7 @@ requestMethod = method , httpVersion = httpversion , pathInfo = H.decodePathSegments path- , rawPathInfo = path+ , rawPathInfo = if settingsNoParsePath settings then unparsedPath else path , rawQueryString = query , queryString = H.parseQuery query , requestHeaders = hdr
Network/Wai/Handler/Warp/RequestHeader.hs view
@@ -27,6 +27,7 @@ parseHeaderLines :: [ByteString] -> IO (H.Method ,ByteString -- Path+ ,ByteString -- Path, parsed ,ByteString -- Query ,H.HttpVersion ,H.RequestHeaders@@ -36,7 +37,7 @@ (method, path', query, httpversion) <- parseRequestLine firstLine let path = parsePath path' hdr = map parseHeader otherLines- return (method, path, query, httpversion, hdr)+ return (method, path', path, query, httpversion, hdr) ----------------------------------------------------------------
Network/Wai/Handler/Warp/Run.hs view
@@ -228,7 +228,7 @@ internalError = responseLBS H.internalServerError500 [(H.hContentType, "text/plain")] "Something went wrong" recvSendLoop fromClient = do- (req, idxhdr, getSource) <- recvRequest conn ii addr fromClient+ (req, idxhdr, getSource) <- recvRequest settings conn ii addr fromClient case settingsIntercept settings req of Nothing -> do -- Let the application run for as long as it wants
Network/Wai/Handler/Warp/Settings.hs view
@@ -35,6 +35,14 @@ -- Default: do nothing. -- -- Since 1.3.6+ , settingsNoParsePath :: Bool+ -- ^ Perform no parsing on the rawPathInfo.+ --+ -- This is useful for writing HTTP proxies.+ --+ -- Default: False+ --+ -- Since 2.0.3 } -- | The default settings for the Warp server. See the individual settings for@@ -51,6 +59,7 @@ , settingsManager = Nothing , settingsFdCacheDuration = 10 , settingsBeforeMainLoop = return ()+ , settingsNoParsePath = False } defaultExceptionHandler :: Maybe Request -> SomeException -> IO ()
warp.cabal view
@@ -1,5 +1,5 @@ Name: warp-Version: 2.0.2.1+Version: 2.0.3 Synopsis: A fast, light-weight web server for WAI applications. License: MIT License-file: LICENSE