@@ -6,21 +6,22 @@
7module Network.Wai.Handler.Warp.Run where
7module Network.Wai.Handler.Warp.Run where
9+import Control.Arrow (first)
9import Control.Concurrent (threadDelay, forkIOWithUnmask)
10import Control.Concurrent (threadDelay, forkIOWithUnmask)
10import qualified Control.Concurrent as Conc (yield)
11import qualified Control.Concurrent as Conc (yield)
11import Control.Exception as E
12import Control.Exception as E
12import Control.Monad (forever, when, unless, void)
13import Control.Monad (forever, when, unless, void)
13import Data.ByteString (ByteString)
14import Data.ByteString (ByteString)
14import qualified Data.ByteString as S
15import qualified Data.ByteString as S
16+import Data.IORef (IORef, newIORef, readIORef, writeIORef)
15import Data.Streaming.Network (bindPortTCP)
17import Data.Streaming.Network (bindPortTCP)
16import Network (sClose, Socket)
18import Network (sClose, Socket)
17import Network.Socket (accept, withSocketsDo, SockAddr)
19import Network.Socket (accept, withSocketsDo, SockAddr)
18import qualified Network.Socket.ByteString as Sock
20import qualified Network.Socket.ByteString as Sock
19import Network.Wai
21import Network.Wai
20−import Network.Wai.Internal (ResponseReceived (ResponseReceived))
22+import Network.Wai.Handler.Warp.Buffer
21import qualified Network.Wai.Handler.Warp.Date as D
23import qualified Network.Wai.Handler.Warp.Date as D
22import qualified Network.Wai.Handler.Warp.FdCache as F
24import qualified Network.Wai.Handler.Warp.FdCache as F
23−import Network.Wai.Handler.Warp.Buffer
24import Network.Wai.Handler.Warp.Header
25import Network.Wai.Handler.Warp.Header
25import Network.Wai.Handler.Warp.Recv
26import Network.Wai.Handler.Warp.Recv
26import Network.Wai.Handler.Warp.Request
27import Network.Wai.Handler.Warp.Request
@@ -29,7 +30,7 @@ import Network.Wai.Handler.Warp.SendFile
29import Network.Wai.Handler.Warp.Settings
30import Network.Wai.Handler.Warp.Settings
30import qualified Network.Wai.Handler.Warp.Timeout as T
31import qualified Network.Wai.Handler.Warp.Timeout as T
31import Network.Wai.Handler.Warp.Types
32import Network.Wai.Handler.Warp.Types
32−import Data.IORef (IORef, newIORef, readIORef, writeIORef)
33+import Network.Wai.Internal (ResponseReceived (ResponseReceived))
34#if WINDOWS
35#if WINDOWS
35import Network.Wai.Handler.Warp.Windows
36import Network.Wai.Handler.Warp.Windows
@@ -112,7 +113,7 @@ runSettingsConnectionMaker :: Settings -> IO (IO Connection, SockAddr) -> Applic
112runSettingsConnectionMaker x y =
113runSettingsConnectionMaker x y =
113 runSettingsConnectionMakerSecure x (go y)
114 runSettingsConnectionMakerSecure x (go y)
115− go = fmap (\(a, b) -> (fmap (, False) a, b))
116+ go = fmap (first (fmap (, False)))
117-- | Allows you to provide a function which will return a function
118-- | Allows you to provide a function which will return a function
118-- which will return 'Connection'.
119-- which will return 'Connection'.