network 2.6.3.0 → 2.6.3.1
raw patch · 5 files changed
+39/−23 lines, 5 files
Files
- CHANGELOG.md +5/−0
- Network/Socket/ByteString.hsc +26/−5
- configure +1/−13
- network.cabal +1/−1
- tests/Regression.hs +6/−4
CHANGELOG.md view
@@ -1,3 +1,8 @@+## Version 2.6.3.1++ * Reverse breaking exception change in `Network.Socket.ByteString.recv`+ [#215](https://github.com/haskell/network/issues/215)+ ## Version 2.6.3.0 * New maintainers: Evan Borden (@eborden) and Kazu Yamamoto (@kazu-yamamoto).
Network/Socket/ByteString.hsc view
@@ -47,9 +47,10 @@ import Data.ByteString (ByteString) import Data.ByteString.Internal (createAndTrim) import Data.ByteString.Unsafe (unsafeUseAsCStringLen)+import Data.Word (Word8) import Foreign.Marshal.Alloc (allocaBytes)-import Foreign.Ptr (castPtr)-import Network.Socket (sendBuf, sendBufTo, recvBuf, recvBufFrom)+import Foreign.Ptr (Ptr, castPtr)+import Network.Socket (sendBuf, sendBufTo, recvBufFrom) import qualified Data.ByteString as B @@ -61,14 +62,22 @@ import Control.Monad (liftM, zipWithM_) import Foreign.Marshal.Array (allocaArray) import Foreign.Marshal.Utils (with)-import Foreign.Ptr (Ptr, plusPtr)+import Foreign.Ptr (plusPtr) import Foreign.Storable (Storable(..))+import Foreign.C.Types (CChar, CSize(..), CInt(..)) import Network.Socket.ByteString.IOVec (IOVec(..)) import Network.Socket.ByteString.MsgHdr (MsgHdr(..)) +#else+import GHC.IO.FD (FD(..), readRawBufferPtr) #endif +#if !defined(mingw32_HOST_OS)+foreign import CALLCONV unsafe "recv"+ c_recv :: CInt -> Ptr CChar -> CSize -> CInt -> IO CInt+#endif+ -- ---------------------------------------------------------------------------- -- Sending @@ -224,8 +233,20 @@ -> IO ByteString -- ^ Data received recv sock nbytes | nbytes < 0 = ioError (mkInvalidRecvArgError "Network.Socket.ByteString.recv")- | otherwise = createAndTrim nbytes $ \ptr ->- recvBuf sock ptr nbytes+ | otherwise = createAndTrim nbytes $ recvInner sock nbytes++recvInner :: Socket -> Int -> Ptr Word8 -> IO Int+recvInner sock nbytes ptr =+ fmap fromIntegral $+#if defined(mingw32_HOST_OS)+ throwSocketErrorIfMinus1Retry "Network.Socket.recvBuf" $+ readRawBufferPtr "Network.Socket.ByteString.recv" (FD s 1) ptr 0 (fromIntegral nbytes)+#else+ throwSocketErrorWaitRead sock "recv" $+ c_recv s (castPtr ptr) (fromIntegral nbytes) 0+#endif+ where+ s = sockFd sock -- | Receive data from the socket. The socket need not be in a -- connected state. Returns @(bytes, address)@ where @bytes@ is a
configure view
@@ -665,7 +665,6 @@ docdir oldincludedir includedir-runstatedir localstatedir sharedstatedir sysconfdir@@ -737,7 +736,6 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var'-runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'@@ -990,15 +988,6 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \- | --runstate | --runstat | --runsta | --runst | --runs \- | --run | --ru | --r)- ac_prev=runstatedir ;;- -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \- | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \- | --run=* | --ru=* | --r=*)- runstatedir=$ac_optarg ;;- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \@@ -1136,7 +1125,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \- libdir localedir mandir runstatedir+ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes.@@ -1289,7 +1278,6 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var]- --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include]
network.cabal view
@@ -1,5 +1,5 @@ name: network-version: 2.6.3.0+version: 2.6.3.1 license: BSD3 license-file: LICENSE maintainer: Kazu Yamamoto, Evan Borden
tests/Regression.hs view
@@ -2,7 +2,6 @@ module Main where import Network.Socket-import qualified Network.Socket.ByteString as BS import Control.Exception @@ -10,6 +9,8 @@ import Test.Framework.Providers.HUnit (testCase) import Test.HUnit (assertFailure) +import qualified Regression.Issue215 as Issue215+ ------------------------------------------------------------------------ -- Tests @@ -47,9 +48,10 @@ tests :: [Test] tests =- [ testCase "testGetAddrInfo" testGetAddrInfo,- testCase "badRecvShouldThrow" badRecvShouldThrow,- testCase "badSendShouldThrow" badSendShouldThrow+ [ testCase "testGetAddrInfo" testGetAddrInfo+ , testCase "badRecvShouldThrow" badRecvShouldThrow+ , testCase "badSendShouldThrow" badSendShouldThrow+ , testCase "recvShouldntThrowOnClosedSocket" Issue215.main ] ------------------------------------------------------------------------