on master help sign in
Switched to simpler definition of Source
1bf1e8eSnoyman
Network/Wai/Handler/CGI.hs+1−1
@@ -58,7 +58,7 @@ run' vars inputH outputH app = do
58 , serverPort = serverport
58 , serverPort = serverport
59 , requestHeaders = map (cleanupVarName *** B.pack) vars
59 , requestHeaders = map (cleanupVarName *** B.pack) vars
60 , urlScheme = urlScheme'
60 , urlScheme = urlScheme'
61− , requestBody = Source contentLength $ requestBodyHandle inputH
61+ , requestBody = requestBodyHandle inputH contentLength
62 , errorHandler = System.IO.hPutStr System.IO.stderr
62 , errorHandler = System.IO.hPutStr System.IO.stderr
63 , remoteHost = B.pack remoteHost'
63 , remoteHost = B.pack remoteHost'
64 , httpVersion = HttpVersion B.empty
64 , httpVersion = HttpVersion B.empty
Network/Wai/Handler/Helper.hs+7−6
@@ -4,11 +4,12 @@ module Network.Wai.Handler.Helper
4
4
5import System.IO (Handle)
5import System.IO (Handle)
6import qualified Data.ByteString as B
6import qualified Data.ByteString as B
7+import Data.ByteString.Lazy.Internal (defaultChunkSize)
8+import Network.Wai (Source (..))
7
9
8−requestBodyHandle :: Handle -> Int -> IO (Maybe (B.ByteString, Int))
10+requestBodyHandle :: Handle -> Int -> Source
9−requestBodyHandle _ 0 = return Nothing
11+requestBodyHandle _ 0 = Source $ return Nothing
10−requestBodyHandle h len = do
12+requestBodyHandle h len = Source $ do
11− let maxChunkSize = 1024
12− bs <- B.hGet h $ min len maxChunkSize
13+ bs <- B.hGet h $ min len defaultChunkSize
13 let newLen = len - B.length bs
14 let newLen = len - B.length bs
14− return $ Just (bs, newLen)
15+ return $ Just (bs, requestBodyHandle h newLen)
Network/Wai/Handler/SimpleServer.hs+1−1
@@ -129,7 +129,7 @@ parseRequest port lines' handle remoteHost' = do
129 , serverPort = port
129 , serverPort = port
130 , requestHeaders = heads
130 , requestHeaders = heads
131 , urlScheme = HTTP
131 , urlScheme = HTTP
132− , requestBody = Source len $ requestBodyHandle handle
132+ , requestBody = requestBodyHandle handle len
133 , errorHandler = System.IO.hPutStr System.IO.stderr
133 , errorHandler = System.IO.hPutStr System.IO.stderr
134 , remoteHost = B8.pack remoteHost'
134 , remoteHost = B8.pack remoteHost'
135 }
135 }