@@ -4,11 +4,12 @@ module Network.Wai.Handler.Helper
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 (..))
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)