packages feed

network 2.2.1.1 → 2.2.1.2

raw patch · 6 files changed

+88/−17 lines, 6 files

Files

Network/BSD.hsc view
@@ -352,7 +352,11 @@         return (HostEntry {                         hostName       = h_name,                         hostAliases    = h_aliases,+#if defined(HAVE_WINSOCK_H) && !defined(cygwin32_HOST_OS)+                        hostFamily     = unpackFamily (fromIntegral (h_addrtype :: CShort)),+#else                         hostFamily     = unpackFamily h_addrtype,+#endif                         hostAddresses  = h_addr_list                 }) 
Network/Socket.hsc view
@@ -1502,6 +1502,8 @@ #ifdef AF_BLUETOOTH 	(#const AF_BLUETOOTH) -> AF_BLUETOOTH #endif+	unknown -> error ("Network.Socket.unpackFamily: unknown address " +++                          "family " ++ show unknown)  -- Socket Types. @@ -1986,19 +1988,23 @@     as <- (#peek struct addrinfo, ai_next) ptr_ai >>= followAddrInfo     return (a:as) -foreign import ccall safe "getaddrinfo"+foreign import ccall safe "hsnet_getaddrinfo"     c_getaddrinfo :: CString -> CString -> Ptr AddrInfo -> Ptr (Ptr AddrInfo)                   -> IO CInt -foreign import ccall safe "freeaddrinfo"+foreign import ccall safe "hsnet_freeaddrinfo"     c_freeaddrinfo :: Ptr AddrInfo -> IO ()  gai_strerror :: CInt -> IO String +#ifdef HAVE_GAI_STRERROR gai_strerror n = c_gai_strerror n >>= peekCString  foreign import ccall safe "gai_strerror"     c_gai_strerror :: CInt -> IO CString+#else+gai_strerror n = return ("error " ++ show n)+#endif  withCStringIf :: Bool -> Int -> (CSize -> CString -> IO a) -> IO a withCStringIf False _ f = f 0 nullPtr
Network/Socket/Internal.hsc view
@@ -18,7 +18,7 @@  #include "HsNet.h" -#if defined(HAVE_WINSOCK_H) && !defined(cygwin32_HOST_OS)+#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS) #define WITH_WINSOCK  1 #endif @@ -57,7 +57,7 @@       Family(..),        -- * Socket error functions-#if defined(HAVE_WINSOCK_H) && !defined(cygwin32_HOST_OS)+#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)       c_getLastError, #endif       throwSocketError,@@ -82,7 +82,7 @@ import Foreign.Ptr ( Ptr, castPtr, plusPtr ) import Foreign.Storable ( Storable(..) ) -#if defined(HAVE_WINSOCK_H) && !defined(cygwin32_HOST_OS)+#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS) import Control.Exception ( finally ) #  if __GLASGOW_HASKELL__ import GHC.IOBase ( IOErrorType(..) )@@ -556,7 +556,7 @@ {-# SPECIALIZE throwSocketErrorIfMinus1RetryMayBlock         :: String -> IO b -> IO CInt -> IO CInt #-} -#if defined(__GLASGOW_HASKELL__) && (!defined(HAVE_WINSOCK_H) || defined(cygwin32_HOST_OS))+#if defined(__GLASGOW_HASKELL__) && (!defined(HAVE_WINSOCK2_H) || defined(cygwin32_HOST_OS))  throwSocketErrorIfMinus1RetryMayBlock name on_block act =     throwErrnoIfMinus1RetryMayBlock name act on_block@@ -576,7 +576,7 @@   throwSocketErrorIfMinus1Retry name act   return () -# if defined(HAVE_WINSOCK_H) && !defined(cygwin32_HOST_OS)+# if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS) throwSocketErrorIfMinus1Retry name act = do   r <- act   if (r == -1)
configure.ac view
@@ -1,5 +1,19 @@ AC_INIT([Haskell network package], [1.0], [libraries@haskell.org], [network]) +ac_includes_default="$ac_includes_default+#ifdef HAVE_NETDB_H+# include <netdb.h>+#endif+#ifdef HAVE_WINSOCK2_H+# include <winsock2.h>+#endif+#ifdef HAVE_WS2TCPIP_H+# include <ws2tcpip.h>+#endif+#ifdef HAVE_WSPIAPI_H+# include <wspiapi.h>+#endif"+ # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([include/HsNet.h]) @@ -15,7 +29,7 @@ AC_C_CONST  dnl ** check for specific header (.h) files that we are interested in-AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h sys/types.h unistd.h winsock.h])+AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h sys/types.h unistd.h winsock2.h ws2tcpip.h wspiapi.h]) AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h netinet/tcp.h sys/socket.h sys/uio.h sys/un.h])  AC_CHECK_FUNCS([readlink symlink])@@ -81,15 +95,37 @@ fi  dnl --------------------------------------------------+dnl * check for Windows networking libraries+dnl --------------------------------------------------+AC_CHECK_LIB(ws2_32, _head_libws2_32_a)++dnl -------------------------------------------------- dnl * test for getaddrinfo as proxy for IPv6 support dnl ---------------------------------------------------AC_CHECK_FUNCS(getaddrinfo)+AC_MSG_CHECKING(for getaddrinfo)+dnl Can't use AC_CHECK_FUNC here, because it doesn't do the right+dnl thing on Windows.+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$ac_includes_default+int testme(){ getaddrinfo; }]])],[AC_DEFINE([HAVE_GETADDRINFO], [1], [Define to 1 if you have the `getaddrinfo' function.]) ac_have_getaddrinfo=yes; AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)]) +dnl Under mingw, we may need to set WINVER to 0x0501 to expose getaddrinfo.+if test "x$ac_have_getaddrinfo" = x; then+  old_CFLAGS="$CFLAGS"+  if test "z$ac_cv_lib_ws2_32__head_libws2_32_a" = zyes; then+    CFLAGS="-DWINVER=0x0501 $CFLAGS"+    AC_MSG_CHECKING(for getaddrinfo if WINVER is 0x0501)+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$ac_includes_default+    int testme(){ getaddrinfo; }]])],[AC_DEFINE([HAVE_GETADDRINFO], [1], [Define to 1 if you have the `getaddrinfo' function.]) AC_DEFINE([NEED_WINVER_XP], [1], [Define to 1 if the `getaddrinfo' function needs WINVER set.]) EXTRA_CPPFLAGS="-DWINVER=0x0501 $EXTRA_CPPFLAGS"; AC_MSG_RESULT(yes)],[CFLAGS="$old_CFLAGS"; AC_MSG_RESULT(no)])+  fi+fi++dnl Missing under mingw, sigh.+AC_CHECK_FUNCS(gai_strerror)+ dnl ------------------------------------------------------- dnl * test for AI_* flags that not all implementations have dnl --------------------------------------------------------AC_CHECK_DECLS([AI_ADDRCONFIG, AI_ALL, AI_NUMERICSERV, AI_V4MAPPED], , ,- [#include <netdb.h>])+AC_CHECK_DECLS([AI_ADDRCONFIG, AI_ALL, AI_NUMERICSERV, AI_V4MAPPED])  dnl -------------------------------------------------- dnl * test for Linux sendfile(2)@@ -112,7 +148,7 @@ case "$host" in *-mingw32) 	EXTRA_SRCS="cbits/initWinSock.c, cbits/winSockErr.c, cbits/asyncAccept.c"-	EXTRA_LIBS=wsock32+	EXTRA_LIBS=ws2_32 	CALLCONV=stdcall ;; *-solaris2*) 	EXTRA_SRCS="cbits/ancilData.c"
include/HsNet.h view
@@ -9,6 +9,10 @@  #include "HsNetworkConfig.h" +#ifdef NEED_WINVER+# define WINVER 0x0501+#endif+ /* ultra-evil... */ #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME@@ -32,8 +36,14 @@ # undef IPV6_SOCKET_SUPPORT #endif -#if defined(HAVE_WINSOCK_H) && !defined(__CYGWIN__)-#include <winsock.h>+#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)+#include <winsock2.h>+# ifdef HAVE_WS2TCPIP_H+#  include <ws2tcpip.h>+# endif+# ifdef HAVE_WSPIAPI_H+#  include <wspiapi.h>+# endif  extern void  shutdownWinSock(); extern int   initWinSock ();@@ -118,11 +128,11 @@ 	      void** pData, 	      int* pLen); -#endif /* HAVE_WINSOCK_H && !__CYGWIN */+#endif /* HAVE_WINSOCK2_H && !__CYGWIN */  INLINE char * my_inet_ntoa(-#if defined(HAVE_WINSOCK_H)+#if defined(HAVE_WINSOCK2_H)              u_long addr #elif defined(HAVE_IN_ADDR_T)              in_addr_t addr@@ -137,5 +147,20 @@     a.s_addr = addr;     return inet_ntoa(a); }++#ifdef HAVE_GETADDRINFO+INLINE int+hsnet_getaddrinfo(const char *hostname, const char *servname,+		  const struct addrinfo *hints, struct addrinfo **res)+{+    return getaddrinfo(hostname, servname, hints, res);+}++INLINE void+hsnet_freeaddrinfo(struct addrinfo *ai)+{+    freeaddrinfo(ai);+}+#endif  #endif
network.cabal view
@@ -1,5 +1,5 @@ name:           network-version:        2.2.1.1+version:        2.2.1.2 license:        BSD3 license-file:   LICENSE maintainer:     Johan Tibell <johan.tibell@gmail.com>