@@ -91,22 +91,31 @@ spell init0 siz0 recv recvBuf
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)
94− let sock' = fdSocket sock
97+ let fd = fdSocket sock
95− size' = fromIntegral size
99+ let size' = fromIntegral size
96− fromIntegral <$> receiveloop sock' ptr size'
100+ fromIntegral <$> receiveloop fd ptr size'
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)
107+ let fd = fdSocket sock
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
108− loop (buf `plusPtr` n) (siz - n)
118+ loop fd (buf `plusPtr` n) (siz - n)
111receiveloop :: CInt -> Ptr Word8 -> CSize -> IO CInt
120receiveloop :: CInt -> Ptr Word8 -> CSize -> IO CInt
112receiveloop sock ptr size = do
121receiveloop sock ptr size = do