network 3.1.3.0 → 3.1.4.0
raw patch · 11 files changed
+212/−157 lines, 11 filesdep ~bytestringPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: bytestring
API changes (from Hackage documentation)
+ Network.Socket: SocketTimeout :: Word32 -> SocketTimeout
+ Network.Socket: newtype SocketTimeout
Files
- CHANGELOG.md +9/−0
- Network/Socket.hs +1/−0
- Network/Socket/ByteString/IO.hsc +5/−0
- Network/Socket/Info.hsc +0/−4
- Network/Socket/Options.hsc +146/−91
- Network/Socket/Types.hsc +0/−18
- Network/Socket/Unix.hsc +33/−31
- configure +9/−9
- configure.ac +1/−1
- include/HsNetDef.h +0/−2
- network.cabal +8/−1
CHANGELOG.md view
@@ -1,3 +1,12 @@+## Version 3.1.4.0++* Install and use afunix_compat.h header.+ [#556](https://github.com/haskell/network/pull/556)+* Supporting SO_SNDTIMEO and SO_RCVTIMEO.+ [#555](https://github.com/haskell/network/pull/555)+* Emulating socketPair on Windows.+ [#554](https://github.com/haskell/network/pull/554)+ ## Version 3.1.3.0 * Supporting AF_UNIX on Windows
Network/Socket.hs view
@@ -143,6 +143,7 @@ ,RecvIPv4TTL,RecvIPv4TOS,RecvIPv4PktInfo ,RecvIPv6HopLimit,RecvIPv6TClass,RecvIPv6PktInfo) , StructLinger (..)+ , SocketTimeout (..) , isSupportedSocketOption , whenSupported , getSocketOption
Network/Socket/ByteString/IO.hsc view
@@ -232,6 +232,11 @@ -- -- For TCP sockets, a zero length return value means the peer has -- closed its half side of the connection.+--+-- Currently, the 'recv' family is blocked on Windows because a proper+-- IO manager is not implemented. To use with 'System.Timeout.timeout'+-- on Windows, use 'Network.Socket.setSocketOption' with+-- 'Network.Socket.RecvTimeOut' as well. recv :: Socket -- ^ Connected socket -> Int -- ^ Maximum number of bytes to receive -> IO ByteString -- ^ Data received
Network/Socket/Info.hsc view
@@ -413,11 +413,7 @@ -- SockAddr instance Show SockAddr where-#if defined(DOMAIN_SOCKET_SUPPORT) showsPrec _ (SockAddrUnix str) = showString str-#else- showsPrec _ SockAddrUnix{} = error "showsPrec: not supported"-#endif showsPrec _ (SockAddrInet port ha) = showHostAddress ha . showString ":"
Network/Socket/Options.hsc view
@@ -26,6 +26,7 @@ , getSockOpt , setSockOpt , StructLinger (..)+ , SocketTimeout (..) ) where import qualified Text.Read as P@@ -38,7 +39,9 @@ import Network.Socket.Types import Network.Socket.ReadShow ------------------------------------------------------------------------------+#include <sys/time.h>++---------------------------------------------------------------- -- Socket Properties -- | Socket options for use with 'setSocketOption' and 'getSocketOption'.@@ -55,18 +58,75 @@ #endif deriving (Eq) +----------------------------------------------------------------++socketOptionBijection :: Bijection SocketOption String+socketOptionBijection =+ [ (UnsupportedSocketOption, "UnsupportedSocketOption")+ , (Debug, "Debug")+ , (ReuseAddr, "ReuseAddr")+ , (SoDomain, "SoDomain")+ , (Type, "Type")+ , (SoProtocol, "SoProtocol")+ , (SoError, "SoError")+ , (DontRoute, "DontRoute")+ , (Broadcast, "Broadcast")+ , (SendBuffer, "SendBuffer")+ , (RecvBuffer, "RecvBuffer")+ , (KeepAlive, "KeepAlive")+ , (OOBInline, "OOBInline")+ , (Linger, "Linger")+ , (ReusePort, "ReusePort")+ , (RecvLowWater, "RecvLowWater")+ , (SendLowWater, "SendLowWater")+ , (RecvTimeOut, "RecvTimeOut")+ , (SendTimeOut, "SendTimeOut")+ , (UseLoopBack, "UseLoopBack")+ , (MaxSegment, "MaxSegment")+ , (NoDelay, "NoDelay")+ , (UserTimeout, "UserTimeout")+ , (Cork, "Cork")+ , (TimeToLive, "TimeToLive")+ , (RecvIPv4TTL, "RecvIPv4TTL")+ , (RecvIPv4TOS, "RecvIPv4TOS")+ , (RecvIPv4PktInfo, "RecvIPv4PktInfo")+ , (IPv6Only, "IPv6Only")+ , (RecvIPv6HopLimit, "RecvIPv6HopLimit")+ , (RecvIPv6TClass, "RecvIPv6TClass")+ , (RecvIPv6PktInfo, "RecvIPv6PktInfo")+ ]++instance Show SocketOption where+ showsPrec = bijectiveShow socketOptionBijection def+ where+ defname = "SockOpt"+ unwrap = \(CustomSockOpt nm) -> nm+ def = defShow defname unwrap showIntInt+++instance Read SocketOption where+ readPrec = bijectiveRead socketOptionBijection def+ where+ defname = "SockOpt"+ def = defRead defname CustomSockOpt readIntInt++----------------------------------------------------------------++pattern UnsupportedSocketOption :: SocketOption+pattern UnsupportedSocketOption = SockOpt (-1) (-1)+ -- | Does the 'SocketOption' exist on this system? isSupportedSocketOption :: SocketOption -> Bool isSupportedSocketOption opt = opt /= SockOpt (-1) (-1) --- | Get the 'SocketType' of an active socket.------ Since: 3.0.1.0-getSocketType :: Socket -> IO SocketType-getSocketType s = unpackSocketType <$> getSockOpt s Type+-- | Execute the given action only when the specified socket option is+-- supported. Any return value is ignored.+whenSupported :: SocketOption -> IO a -> IO ()+whenSupported s action+ | isSupportedSocketOption s = action >> return ()+ | otherwise = return () -pattern UnsupportedSocketOption :: SocketOption-pattern UnsupportedSocketOption = SockOpt (-1) (-1)+---------------------------------------------------------------- #ifdef SOL_SOCKET -- | SO_ACCEPTCONN, read-only@@ -192,14 +252,14 @@ #else pattern SendLowWater = SockOpt (-1) (-1) #endif--- | SO_RCVTIMEO: this does not work at this moment.+-- | SO_RCVTIMEO: timeout in microseconds pattern RecvTimeOut :: SocketOption #ifdef SO_RCVTIMEO pattern RecvTimeOut = SockOpt (#const SOL_SOCKET) (#const SO_RCVTIMEO) #else pattern RecvTimeOut = SockOpt (-1) (-1) #endif--- | SO_SNDTIMEO: this does not work at this moment.+-- | SO_SNDTIMEO: timeout in microseconds pattern SendTimeOut :: SocketOption #ifdef SO_SNDTIMEO pattern SendTimeOut = SockOpt (#const SOL_SOCKET) (#const SO_SNDTIMEO)@@ -317,41 +377,7 @@ where CustomSockOpt (x, y) = SockOpt x y -#if __GLASGOW_HASKELL__ >= 806-{-# COMPLETE CustomSockOpt #-}-#endif-#ifdef SO_LINGER--- | Low level 'SO_LINBER' option value, which can be used with 'setSockOpt'.----data StructLinger = StructLinger {- -- | Set the linger option on.- sl_onoff :: CInt,-- -- | Linger timeout.- sl_linger :: CInt- }- deriving (Eq, Ord, Show)--instance Storable StructLinger where- sizeOf _ = (#const sizeof(struct linger))- alignment _ = alignment (0 :: CInt)-- peek p = do- onoff <- (#peek struct linger, l_onoff) p- linger <- (#peek struct linger, l_linger) p- return $ StructLinger onoff linger-- poke p (StructLinger onoff linger) = do- (#poke struct linger, l_onoff) p onoff- (#poke struct linger, l_linger) p linger-#endif---- | Execute the given action only when the specified socket option is--- supported. Any return value is ignored.-whenSupported :: SocketOption -> IO a -> IO ()-whenSupported s action- | isSupportedSocketOption s = action >> return ()- | otherwise = return ()+---------------------------------------------------------------- -- | Set a socket option that expects an 'Int' value. setSocketOption :: Socket@@ -363,6 +389,8 @@ let arg = if v == 0 then StructLinger 0 0 else StructLinger 1 (fromIntegral v) setSockOpt s so arg #endif+setSocketOption s so@RecvTimeOut v = setSockOpt s so $ SocketTimeout $ fromIntegral v+setSocketOption s so@SendTimeOut v = setSockOpt s so $ SocketTimeout $ fromIntegral v setSocketOption s sa v = setSockOpt s sa (fromIntegral v :: CInt) -- | Set a socket option.@@ -378,6 +406,8 @@ throwSocketErrorIfMinus1_ "Network.Socket.setSockOpt" $ c_setsockopt fd level opt ptr sz +----------------------------------------------------------------+ -- | Get a socket option that gives an 'Int' value. getSocketOption :: Socket -> SocketOption -- Option Name@@ -387,6 +417,12 @@ StructLinger onoff linger <- getSockOpt s so return $ fromIntegral $ if onoff == 0 then 0 else linger #endif+getSocketOption s so@RecvTimeOut = do+ SocketTimeout to <- getSockOpt s so+ return $ fromIntegral to+getSocketOption s so@SendTimeOut = do+ SocketTimeout to <- getSockOpt s so+ return $ fromIntegral to getSocketOption s so = do n :: CInt <- getSockOpt s so return $ fromIntegral n@@ -404,56 +440,75 @@ c_getsockopt fd level opt ptr ptr_sz peek ptr +---------------------------------------------------------------- -socketOptionBijection :: Bijection SocketOption String-socketOptionBijection =- [ (UnsupportedSocketOption, "UnsupportedSocketOption")- , (Debug, "Debug")- , (ReuseAddr, "ReuseAddr")- , (SoDomain, "SoDomain")- , (Type, "Type")- , (SoProtocol, "SoProtocol")- , (SoError, "SoError")- , (DontRoute, "DontRoute")- , (Broadcast, "Broadcast")- , (SendBuffer, "SendBuffer")- , (RecvBuffer, "RecvBuffer")- , (KeepAlive, "KeepAlive")- , (OOBInline, "OOBInline")- , (Linger, "Linger")- , (ReusePort, "ReusePort")- , (RecvLowWater, "RecvLowWater")- , (SendLowWater, "SendLowWater")- , (RecvTimeOut, "RecvTimeOut")- , (SendTimeOut, "SendTimeOut")- , (UseLoopBack, "UseLoopBack")- , (MaxSegment, "MaxSegment")- , (NoDelay, "NoDelay")- , (UserTimeout, "UserTimeout")- , (Cork, "Cork")- , (TimeToLive, "TimeToLive")- , (RecvIPv4TTL, "RecvIPv4TTL")- , (RecvIPv4TOS, "RecvIPv4TOS")- , (RecvIPv4PktInfo, "RecvIPv4PktInfo")- , (IPv6Only, "IPv6Only")- , (RecvIPv6HopLimit, "RecvIPv6HopLimit")- , (RecvIPv6TClass, "RecvIPv6TClass")- , (RecvIPv6PktInfo, "RecvIPv6PktInfo")- ]+-- | Get the 'SocketType' of an active socket.+--+-- Since: 3.0.1.0+getSocketType :: Socket -> IO SocketType+getSocketType s = unpackSocketType <$> getSockOpt s Type -instance Show SocketOption where- showsPrec = bijectiveShow socketOptionBijection def- where- defname = "SockOpt"- unwrap = \(CustomSockOpt nm) -> nm- def = defShow defname unwrap showIntInt+---------------------------------------------------------------- +#if __GLASGOW_HASKELL__ >= 806+{-# COMPLETE CustomSockOpt #-}+#endif+#ifdef SO_LINGER+-- | Low level 'SO_LINBER' option value, which can be used with 'setSockOpt'.+--+data StructLinger = StructLinger {+ -- | Set the linger option on.+ sl_onoff :: CInt, -instance Read SocketOption where- readPrec = bijectiveRead socketOptionBijection def- where- defname = "SockOpt"- def = defRead defname CustomSockOpt readIntInt+ -- | Linger timeout.+ sl_linger :: CInt+ }+ deriving (Eq, Ord, Show)++instance Storable StructLinger where+ sizeOf _ = (#const sizeof(struct linger))+ alignment _ = alignment (0 :: CInt)++ peek p = do+ onoff <- (#peek struct linger, l_onoff) p+ linger <- (#peek struct linger, l_linger) p+ return $ StructLinger onoff linger++ poke p (StructLinger onoff linger) = do+ (#poke struct linger, l_onoff) p onoff+ (#poke struct linger, l_linger) p linger+#endif++----------------------------------------------------------------++-- | Timeout in microseconds.+-- This will be converted into struct timeval on Unix and+-- DWORD (as milliseconds) on Windows.+newtype SocketTimeout = SocketTimeout Word32 deriving (Eq, Ord, Show)++#if defined(mingw32_HOST_OS)+instance Storable SocketTimeout where+ sizeOf (SocketTimeout to) = sizeOf to -- DWORD as milliseconds+ alignment _ = 0+ peek ptr = do+ to <- peek (castPtr ptr)+ return $ SocketTimeout (to * 1000)+ poke ptr (SocketTimeout to) = poke (castPtr ptr) (to `div` 1000)+#else+instance Storable SocketTimeout where+ sizeOf _ = (#size struct timeval)+ alignment _ = (#const offsetof(struct {char x__; struct timeval (y__); }, y__))+ peek ptr = do+ sec <- (#peek struct timeval, tv_sec) ptr+ usec <- (#peek struct timeval, tv_usec) ptr+ return $ SocketTimeout (sec * 1000000 + usec)+ poke ptr (SocketTimeout to) = do+ let (sec, usec) = to `divMod` 1000000+ (#poke struct timeval, tv_sec) ptr sec+ (#poke struct timeval, tv_usec) ptr usec+#endif++---------------------------------------------------------------- foreign import CALLCONV unsafe "getsockopt" c_getsockopt :: CInt -> CInt -> CInt -> Ptr a -> Ptr CInt -> IO CInt
Network/Socket/Types.hsc view
@@ -93,9 +93,7 @@ import qualified Text.Read as P -#if defined(DOMAIN_SOCKET_SUPPORT) import Foreign.Marshal.Array-#endif import Network.Socket.Imports @@ -1075,11 +1073,7 @@ isSupportedSockAddr addr = case addr of SockAddrInet{} -> True SockAddrInet6{} -> True-#if defined(DOMAIN_SOCKET_SUPPORT) SockAddrUnix{} -> True-#else- SockAddrUnix{} -> False-#endif instance SocketAddress SockAddr where sizeOfSocketAddress = sizeOfSockAddr@@ -1098,7 +1092,6 @@ -- 'SockAddr'. This function differs from 'Foreign.Storable.sizeOf' -- in that the value of the argument /is/ used. sizeOfSockAddr :: SockAddr -> Int-#if defined(DOMAIN_SOCKET_SUPPORT) # ifdef linux_HOST_OS -- http://man7.org/linux/man-pages/man7/unix.7.html says: -- "an abstract socket address is distinguished (from a@@ -1118,9 +1111,6 @@ # else sizeOfSockAddr SockAddrUnix{} = #const sizeof(struct sockaddr_un) # endif-#else-sizeOfSockAddr SockAddrUnix{} = error "sizeOfSockAddr: not supported"-#endif sizeOfSockAddr SockAddrInet{} = #const sizeof(struct sockaddr_in) sizeOfSockAddr SockAddrInet6{} = #const sizeof(struct sockaddr_in6) @@ -1135,10 +1125,8 @@ -- structure, and attempting to do so could overflow the allocated storage -- space. This constant holds the maximum allowable path length. ---#if defined(DOMAIN_SOCKET_SUPPORT) unixPathMax :: Int unixPathMax = #const sizeof(((struct sockaddr_un *)NULL)->sun_path)-#endif -- We can't write an instance of 'Storable' for 'SockAddr' because -- @sockaddr@ is a sum type of variable size but@@ -1149,7 +1137,6 @@ -- | Write the given 'SockAddr' to the given memory location. pokeSockAddr :: Ptr a -> SockAddr -> IO ()-#if defined(DOMAIN_SOCKET_SUPPORT) pokeSockAddr p sa@(SockAddrUnix path) = do when (length path > unixPathMax) $ error $ "pokeSockAddr: path is too long in SockAddrUnix " <> show path@@ -1162,9 +1149,6 @@ let pathC = map castCharToCChar path -- the buffer is already filled with nulls. pokeArray ((#ptr struct sockaddr_un, sun_path) p) pathC-#else-pokeSockAddr _ SockAddrUnix{} = error "pokeSockAddr: not supported"-#endif pokeSockAddr p (SockAddrInet port addr) = do zeroMemory p (#const sizeof(struct sockaddr_in)) #if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)@@ -1189,11 +1173,9 @@ peekSockAddr p = do family <- (#peek struct sockaddr, sa_family) p case family :: CSaFamily of-#if defined(DOMAIN_SOCKET_SUPPORT) (#const AF_UNIX) -> do str <- peekCAString ((#ptr struct sockaddr_un, sun_path) p) return (SockAddrUnix str)-#endif (#const AF_INET) -> do addr <- (#peek struct sockaddr_in, sin_addr) p port <- (#peek struct sockaddr_in, sin_port) p
Network/Socket/Unix.hsc view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE ScopedTypeVariables #-} #include "HsNet.h" ##include "HsNetDef.h"@@ -13,16 +14,24 @@ , getPeerEid ) where -import System.Posix.Types (Fd(..))-+import Foreign.Marshal.Alloc (allocaBytes) import Network.Socket.Buffer+import Network.Socket.Fcntl import Network.Socket.Imports+import Network.Socket.Types+import System.Posix.Types (Fd(..))+ #if defined(mingw32_HOST_OS)+import Network.Socket.Syscall import Network.Socket.Win32.Cmsg+import System.Directory+import System.IO+import System.IO.Temp #else+import Foreign.Marshal.Array (peekArray)+import Network.Socket.Internal import Network.Socket.Posix.Cmsg #endif-import Network.Socket.Types #if defined(HAVE_GETPEEREID) import System.IO.Error (catchIOError)@@ -30,13 +39,7 @@ #ifdef HAVE_GETPEEREID import Foreign.Marshal.Alloc (alloca) #endif-#ifdef DOMAIN_SOCKET_SUPPORT-import Foreign.Marshal.Alloc (allocaBytes)-import Foreign.Marshal.Array (peekArray) -import Network.Socket.Fcntl-import Network.Socket.Internal-#endif #ifdef HAVE_STRUCT_UCRED_SO_PEERCRED import Network.Socket.Options #endif@@ -123,14 +126,12 @@ {-# Deprecated getPeerEid "Use getPeerCredential instead" #-} -- | Whether or not UNIX-domain sockets are available.+-- 'AF_UNIX' is supported on Windows since 3.1.3.0.+-- So, this variable is 'True` on all platforms. -- -- Since 2.7.0.0. isUnixDomainSocketAvailable :: Bool-#if defined(DOMAIN_SOCKET_SUPPORT) isUnixDomainSocketAvailable = True-#else-isUnixDomainSocketAvailable = False-#endif data NullSockAddr = NullSockAddr @@ -140,26 +141,19 @@ pokeSocketAddress _ _ = return () -- | Send a file descriptor over a UNIX-domain socket.--- Use this function in the case where 'isUnixDomainSocketAvailable' is--- 'True'.+-- This function does not work on Windows. sendFd :: Socket -> CInt -> IO ()-#if defined(DOMAIN_SOCKET_SUPPORT) sendFd s outfd = void $ allocaBytes dummyBufSize $ \buf -> do let cmsg = encodeCmsg $ Fd outfd sendBufMsg s NullSockAddr [(buf,dummyBufSize)] [cmsg] mempty where dummyBufSize = 1-#else-sendFd _ _ = error "Network.Socket.sendFd"-#endif -- | Receive a file descriptor over a UNIX-domain socket. Note that the resulting -- file descriptor may have to be put into non-blocking mode in order to be -- used safely. See 'setNonBlockIfNeeded'.--- Use this function in the case where 'isUnixDomainSocketAvailable' is--- 'True'.+-- This function does not work on Windows. recvFd :: Socket -> IO CInt-#if defined(DOMAIN_SOCKET_SUPPORT) recvFd s = allocaBytes dummyBufSize $ \buf -> do (NullSockAddr, _, cmsgs, _) <- recvBufMsg s [(buf,dummyBufSize)] 32 mempty case (lookupCmsg CmsgIdFd cmsgs >>= decodeCmsg) :: Maybe Fd of@@ -167,19 +161,29 @@ Just (Fd fd) -> return fd where dummyBufSize = 16-#else-recvFd _ = error "Network.Socket.recvFd"-#endif -- | Build a pair of connected socket objects.--- For portability, use this function in the case--- where 'isUnixDomainSocketAvailable' is 'True'--- and specify 'AF_UNIX' to the first argument.+-- On Windows, this function emulates socketpair() using+-- 'AF_UNIX' and a temporary file will remain. socketPair :: Family -- Family Name (usually AF_UNIX) -> SocketType -- Socket Type (usually Stream) -> ProtocolNumber -- Protocol Number -> IO (Socket, Socket) -- unnamed and connected.-#if defined(DOMAIN_SOCKET_SUPPORT)+#if defined(mingw32_HOST_OS)+socketPair _ _ _ = withSystemTempFile "temp-for-pair" $ \file hdl -> do+ hClose hdl+ removeFile file+ listenSock <- socket AF_UNIX Stream defaultProtocol+ bind listenSock $ SockAddrUnix file+ listen listenSock 10+ clientSock <- socket AF_UNIX Stream defaultProtocol+ connect clientSock $ SockAddrUnix file+ (serverSock, _ :: SockAddr) <- accept listenSock+ close listenSock+ withFdSocket clientSock setNonBlockIfNeeded+ withFdSocket serverSock setNonBlockIfNeeded+ return (clientSock, serverSock)+#else socketPair family stype protocol = allocaBytes (2 * sizeOf (1 :: CInt)) $ \ fdArr -> do let c_stype = packSocketType stype@@ -194,6 +198,4 @@ foreign import ccall unsafe "socketpair" c_socketpair :: CInt -> CInt -> CInt -> Ptr CInt -> IO CInt-#else-socketPair _ _ _ = error "Network.Socket.socketPair" #endif
configure view
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.69 for Haskell network package 3.1.3.0.+# Generated by GNU Autoconf 2.69 for Haskell network package 3.1.4.0. # # Report bugs to <libraries@haskell.org>. #@@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='Haskell network package' PACKAGE_TARNAME='network'-PACKAGE_VERSION='3.1.3.0'-PACKAGE_STRING='Haskell network package 3.1.3.0'+PACKAGE_VERSION='3.1.4.0'+PACKAGE_STRING='Haskell network package 3.1.4.0' PACKAGE_BUGREPORT='libraries@haskell.org' PACKAGE_URL='' @@ -1234,7 +1234,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF-\`configure' configures Haskell network package 3.1.3.0 to adapt to many kinds of systems.+\`configure' configures Haskell network package 3.1.4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1299,7 +1299,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in- short | recursive ) echo "Configuration of Haskell network package 3.1.3.0:";;+ short | recursive ) echo "Configuration of Haskell network package 3.1.4.0:";; esac cat <<\_ACEOF @@ -1384,7 +1384,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF-Haskell network package configure 3.1.3.0+Haskell network package configure 3.1.4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc.@@ -1910,7 +1910,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Haskell network package $as_me 3.1.3.0, which was+It was created by Haskell network package $as_me 3.1.4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@@@ -4419,7 +4419,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log="-This file was extended by Haskell network package $as_me 3.1.3.0, which was+This file was extended by Haskell network package $as_me 3.1.4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES@@ -4472,7 +4472,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\-Haskell network package config.status 3.1.3.0+Haskell network package config.status 3.1.4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\"
configure.ac view
@@ -1,5 +1,5 @@ AC_INIT([Haskell network package],- [3.1.3.0],+ [3.1.4.0], [libraries@haskell.org], [network])
include/HsNetDef.h view
@@ -10,8 +10,6 @@ #undef PACKAGE_TARNAME #undef PACKAGE_VERSION -#define DOMAIN_SOCKET_SUPPORT 1- #if defined(HAVE_STRUCT_UCRED) && HAVE_DECL_SO_PEERCRED # define HAVE_STRUCT_UCRED_SO_PEERCRED 1 #else
network.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: network-version: 3.1.3.0+version: 3.1.4.0 license: BSD3 license-file: LICENSE maintainer: Kazu Yamamoto, Evan Borden@@ -124,6 +124,10 @@ include-dirs: include includes: HsNet.h HsNetDef.h alignment.h win32defs.h install-includes: HsNet.h HsNetDef.h alignment.h win32defs.h+ if os(windows)+ includes: afunix_compat.h+ install-includes: afunix_compat.h+ ghc-options: -Wall -fwarn-tabs build-depends: base >=4.9 && <5,@@ -167,6 +171,9 @@ if impl(ghc >=7.10) cpp-options: -D_WIN32_WINNT=0x0600 cc-options: -D_WIN32_WINNT=0x0600++ build-depends:+ temporary test-suite spec type: exitcode-stdio-1.0