@@ -75,9 +75,14 @@ import Foreign.Ptr (minusPtr, plusPtr, Ptr, castPtr)
75import Foreign.Storable (Storable(..))
75import Foreign.Storable (Storable(..))
76import GHC.ForeignPtr (mallocPlainForeignPtrBytes)
76import GHC.ForeignPtr (mallocPlainForeignPtrBytes)
77import Network.Socket
77import Network.Socket
78− (withFdSocket, Socket, PortNumber, SocketOption(..), Family(..),
78+ (Socket, PortNumber, SocketOption(..), Family(..),
79 SockAddr(..), withSocketsDo, SocketType(..), socket, accept, bind,
79 SockAddr(..), withSocketsDo, SocketType(..), socket, accept, bind,
80 defaultProtocol, setSocketOption, maxListenQueue, sendBuf, recvBuf)
80 defaultProtocol, setSocketOption, maxListenQueue, sendBuf, recvBuf)
81+#if MIN_VERSION_network(3,1,0)
82+import Network.Socket (withFdSocket)
84+import Network.Socket (fdSocket)
81import Prelude hiding (read)
86import Prelude hiding (read)
83import qualified Network.Socket as Net
88import qualified Network.Socket as Net
@@ -181,7 +186,11 @@ readArrayUpto = readArrayUptoWith recvBuf
182waitWhen0 :: Int -> Socket -> IO ()
187waitWhen0 :: Int -> Socket -> IO ()
183waitWhen0 0 s = when rtsSupportsBoundThreads $
188waitWhen0 0 s = when rtsSupportsBoundThreads $
189+#if MIN_VERSION_network(3,1,0)
184 withFdSocket s $ \fd -> threadWaitWrite $ fromIntegral fd
190 withFdSocket s $ \fd -> threadWaitWrite $ fromIntegral fd
192+ let fd = fdSocket s in threadWaitWrite $ fromIntegral fd
185waitWhen0 _ _ = return ()
194waitWhen0 _ _ = return ()
187sendAll :: Socket -> Ptr Word8 -> Int -> IO ()
196sendAll :: Socket -> Ptr Word8 -> Int -> IO ()