on master help sign in
catching up network 3.0.
5c9ccd5Kazu Yamamoto
warp/Network/Wai/Handler/Warp/Recv.hs+17−8
@@ -91,22 +91,31 @@ spell init0 siz0 recv recvBuf
91
91
92receive :: Socket -> BufferPool -> Recv
92receive :: Socket -> BufferPool -> Recv
93receive sock pool = withBufferPool pool $ \ (ptr, size) -> do
93receive sock pool = withBufferPool pool $ \ (ptr, size) -> do
94+#if MIN_VERSION_network(3,0,0)
95+ fd <- fdSocket sock
96+#else
94− let sock' = fdSocket sock
97+ let fd = fdSocket sock
98+#endif
95− size' = fromIntegral size
99+ let size' = fromIntegral size
96− fromIntegral <$> receiveloop sock' ptr size'
100+ fromIntegral <$> receiveloop fd ptr size'
97
101
98receiveBuf :: Socket -> RecvBuf
102receiveBuf :: Socket -> RecvBuf
99−receiveBuf sock buf0 siz0 = loop buf0 siz0
103+receiveBuf sock buf0 siz0 = do
104+#if MIN_VERSION_network(3,0,0)
105+ fd <- fdSocket sock
106+#else
107+ let fd = fdSocket sock
108+#endif
109+ loop fd buf0 siz0
100 where
110 where
101− loop _ 0 = return True
111+ loop _ _ 0 = return True
102− loop buf siz = do
112+ loop fd buf siz = do
103 n <- fromIntegral <$> receiveloop fd buf (fromIntegral siz)
113 n <- fromIntegral <$> receiveloop fd buf (fromIntegral siz)
104 -- fixme: what should we do in the case of n == 0
114 -- fixme: what should we do in the case of n == 0
105 if n == 0 then
115 if n == 0 then
106 return False
116 return False
107 else
117 else
108− loop (buf `plusPtr` n) (siz - n)
118+ loop fd (buf `plusPtr` n) (siz - n)
109− fd = fdSocket sock
110
119
111receiveloop :: CInt -> Ptr Word8 -> CSize -> IO CInt
120receiveloop :: CInt -> Ptr Word8 -> CSize -> IO CInt
112receiveloop sock ptr size = do
121receiveloop sock ptr size = do
warp/Network/Wai/Handler/Warp/Run.hs+7−1
@@ -536,7 +536,13 @@ setSocketCloseOnExec :: Socket -> IO ()
536#if WINDOWS
536#if WINDOWS
537setSocketCloseOnExec _ = return ()
537setSocketCloseOnExec _ = return ()
538#else
538#else
539+setSocketCloseOnExec socket = do
540+#if MIN_VERSION_network(3,0,0)
541+ fd <- fdSocket socket
542+#else
543+ let fd = fdSocket socket
544+#endif
539−setSocketCloseOnExec socket = F.setFileCloseOnExec $ fromIntegral $ fdSocket socket
545+ F.setFileCloseOnExec $ fromIntegral fd
540#endif
546#endif
541
547
542gracefulShutdown :: Settings -> Counter -> IO ()
548gracefulShutdown :: Settings -> Counter -> IO ()