diff --git a/io-streams-haproxy.cabal b/io-streams-haproxy.cabal
--- a/io-streams-haproxy.cabal
+++ b/io-streams-haproxy.cabal
@@ -1,5 +1,5 @@
 name:                io-streams-haproxy
-version:             1.0.0.2
+version:             1.0.1.0
 synopsis:            HAProxy protocol 1.5 support for io-streams
 
 description: HAProxy protocol version 1.5 support (see
@@ -23,7 +23,7 @@
 cabal-version:       >=1.10
 Bug-Reports:         https://github.com/snapframework/io-streams-haproxy/issues
 Tested-With:         GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3,
-                     GHC == 8.0.1
+                     GHC == 8.0.1, GHC == 8.2.1, GHC == 8.4.3, GHC == 8.6.1
 
 source-repository head
   type:     git
@@ -35,11 +35,11 @@
   other-modules:     System.IO.Streams.Network.Internal.Address
   c-sources:         cbits/byteorder.c
 
-  build-depends:     base              >= 4.5 && < 4.11,
+  build-depends:     base              >= 4.5 && < 4.13,
                      attoparsec        >= 0.7 && < 0.14,
                      bytestring        >= 0.9 && < 0.11,
                      io-streams        >= 1.3 && < 1.6,
-                     network           >= 2.3 && < 2.7,
+                     network           >= 2.3 && < 3.1,
                      transformers      >= 0.3 && < 0.6
   default-language:  Haskell2010
 
diff --git a/src/System/IO/Streams/Network/HAProxy.hs b/src/System/IO/Streams/Network/HAProxy.hs
--- a/src/System/IO/Streams/Network/HAProxy.hs
+++ b/src/System/IO/Streams/Network/HAProxy.hs
@@ -69,9 +69,21 @@
 socketToProxyInfo :: N.Socket -> N.SockAddr -> IO ProxyInfo
 socketToProxyInfo s sa = do
     da <- N.getSocketName s
-    let (N.MkSocket _ _ !sty _ _) = s
+    !sty <- getSockType
     return $! makeProxyInfo sa da (addrFamily sa) sty
-
+  where
+#if MIN_VERSION_network(2,7,0)
+    getSockType = do
+        c <- N.getSocketOption s N.Type
+        -- This is a kludge until network has better support for returning
+        -- SocketType
+        case c of
+          1 -> return N.Stream
+          2 -> return N.Datagram
+          _ -> error ("bad socket type: " ++ show c)
+#else
+    getSockType = let (N.MkSocket _ _ sty _ _) = s in return sty
+#endif
 
 ------------------------------------------------------------------------------
 -- | Parses the proxy headers emitted by HAProxy and runs a user action with
diff --git a/test/System/IO/Streams/Network/HAProxy/Tests.hs b/test/System/IO/Streams/Network/HAProxy/Tests.hs
--- a/test/System/IO/Streams/Network/HAProxy/Tests.hs
+++ b/test/System/IO/Streams/Network/HAProxy/Tests.hs
@@ -103,12 +103,24 @@
     startServer :: Chan Bool -> IO (ThreadId, Int)
     startServer = E.bracketOnError getSock N.close . forkServer
 
+    getBindAddr = do
+#if MIN_VERSION_network(2,7,0)
+        getSockAddr (fromIntegral N.defaultPort) "127.0.0.1"
+#else
+        getSockAddr (fromIntegral N.aNY_PORT) "127.0.0.1"
+#endif
+
     getSock = do
-        (family, addr) <- getSockAddr (fromIntegral N.aNY_PORT) "127.0.0.1"
+        (family, addr) <- getBindAddr
         sock           <- N.socket family N.Stream 0
         N.setSocketOption sock N.ReuseAddr 1
         N.setSocketOption sock N.NoDelay 1
+
+#if MIN_VERSION_network(2,7,0)
+        N.bind sock addr
+#else
         N.bindSocket sock addr
+#endif
         N.listen sock 150
         return $! sock
 
@@ -579,7 +591,7 @@
 
 ------------------------------------------------------------------------------
 localhost :: Int -> IO (N.SockAddr)
-localhost p = N.SockAddrInet (fromIntegral p) <$> N.inet_addr "127.0.0.1"
+localhost p = snd <$> getSockAddr p "127.0.0.1"
 
 
 ------------------------------------------------------------------------------
