on master help sign in
Switched to simpler definition of Source
commit1bf1e8ebbfbb29fb1638793d2f5bbd11ff841ca4 authorSnoyman <snoyman@snoytop-karmic.(none)> dateSat 27 Feb 2010, 23:21 (17 years ago) parentde3b989
3 files changed+9−8
Network/Wai/Handler/CGI.hs+1−1 Network/Wai/Handler/Helper.hs+7−6 Network/Wai/Handler/SimpleServer.hs+1−1
Network/Wai/Handler/CGI.hs+1−1
@@ -58,7 +58,7 @@ run' vars inputH outputH app = do
5858 , serverPort = serverport
5959 , requestHeaders = map (cleanupVarName *** B.pack) vars
6060 , urlScheme = urlScheme'
61− , requestBody = Source contentLength $ requestBodyHandle inputH
61+ , requestBody = requestBodyHandle inputH contentLength
6262 , errorHandler = System.IO.hPutStr System.IO.stderr
6363 , remoteHost = B.pack remoteHost'
6464 , httpVersion = HttpVersion B.empty
Network/Wai/Handler/Helper.hs+7−6
@@ -4,11 +4,12 @@ module Network.Wai.Handler.Helper
44
55import System.IO (Handle)
66import qualified Data.ByteString as B
7+import Data.ByteString.Lazy.Internal (defaultChunkSize)
8+import Network.Wai (Source (..))
79
8−requestBodyHandle :: Handle -> Int -> IO (Maybe (B.ByteString, Int))
9−requestBodyHandle _ 0 = return Nothing
10−requestBodyHandle h len = do
11− let maxChunkSize = 1024
12− bs <- B.hGet h $ min len maxChunkSize
10+requestBodyHandle :: Handle -> Int -> Source
11+requestBodyHandle _ 0 = Source $ return Nothing
12+requestBodyHandle h len = Source $ do
13+ bs <- B.hGet h $ min len defaultChunkSize
1314 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
129129 , serverPort = port
130130 , requestHeaders = heads
131131 , urlScheme = HTTP
132− , requestBody = Source len $ requestBodyHandle handle
132+ , requestBody = requestBodyHandle handle len
133133 , errorHandler = System.IO.hPutStr System.IO.stderr
134134 , remoteHost = B8.pack remoteHost'
135135 }