on master help sign in
Using our receive.
5531619Kazu Yamamoto
warp/Network/Wai/Handler/Warp/Run.hs+6−4
@@ -24,6 +24,7 @@ import Network.Wai.Handler.Warp.Response
24import Network.Wai.Handler.Warp.Settings
24import Network.Wai.Handler.Warp.Settings
25import qualified Network.Wai.Handler.Warp.Timeout as T
25import qualified Network.Wai.Handler.Warp.Timeout as T
26import Network.Wai.Handler.Warp.Types
26import Network.Wai.Handler.Warp.Types
27+import Network.Wai.Handler.Warp.Recv
27
28
28#if WINDOWS
29#if WINDOWS
29import qualified Control.Concurrent.MVar as MV
30import qualified Control.Concurrent.MVar as MV
@@ -44,13 +45,13 @@ bytesPerRead :: Int
44bytesPerRead = 4096
45bytesPerRead = 4096
45
46
46-- | Default action value for 'Connection'
47-- | Default action value for 'Connection'
47−socketConnection :: Socket -> Connection
48+socketConnection :: Socket -> ReceiveBuffer -> Connection
48−socketConnection s = Connection
49+socketConnection s buf = Connection
49 { connSendMany = Sock.sendMany s
50 { connSendMany = Sock.sendMany s
50 , connSendAll = Sock.sendAll s
51 , connSendAll = Sock.sendAll s
51 , connSendFile = sendFile s
52 , connSendFile = sendFile s
52 , connClose = sClose s
53 , connClose = sClose s
53− , connRecv = Sock.recv s bytesPerRead
54+ , connRecv = receive s buf bytesPerRead
54 }
55 }
55
56
56sendFile :: Socket -> FilePath -> Integer -> Integer -> IO () -> [ByteString] -> Cleaner -> IO ()
57sendFile :: Socket -> FilePath -> Integer -> Integer -> IO () -> [ByteString] -> Cleaner -> IO ()
@@ -110,8 +111,9 @@ runSettingsSocket set socket app =
110 where
111 where
111 getter = do
112 getter = do
112 (conn, sa) <- accept socket
113 (conn, sa) <- accept socket
114+ buf <- allocateRecvBuffer bytesPerRead
113 setSocketCloseOnExec socket
115 setSocketCloseOnExec socket
114− return (socketConnection conn, sa)
116+ return (socketConnection conn buf, sa)
115
117
116runSettingsConnection :: Settings -> IO (Connection, SockAddr) -> Application -> IO ()
118runSettingsConnection :: Settings -> IO (Connection, SockAddr) -> Application -> IO ()
117runSettingsConnection set getConn app = runSettingsConnectionMaker set getConnMaker app
119runSettingsConnection set getConn app = runSettingsConnectionMaker set getConnMaker app
warp/warp.cabal+1
@@ -59,6 +59,7 @@ Library
59 Network.Wai.Handler.Warp.Run
59 Network.Wai.Handler.Warp.Run
60 Network.Wai.Handler.Warp.Settings
60 Network.Wai.Handler.Warp.Settings
61 Network.Wai.Handler.Warp.Types
61 Network.Wai.Handler.Warp.Types
62+ Network.Wai.Handler.Warp.Recv
62 Paths_warp
63 Paths_warp
63 Ghc-Options: -Wall
64 Ghc-Options: -Wall
64 if (os(linux) || os(freebsd) || os(darwin)) && flag(allow-sendfilefd)
65 if (os(linux) || os(freebsd) || os(darwin)) && flag(allow-sendfilefd)