diff --git a/dbus.cabal b/dbus.cabal
--- a/dbus.cabal
+++ b/dbus.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.8
 name: dbus
-version: 1.2.3
+version: 1.2.4
 license: Apache-2.0
 license-file: license.txt
 maintainer: Andrey Sverdlichenko <blaze@ruddy.ru>
@@ -100,7 +100,7 @@
         exceptions <0.11,
         filepath <1.5,
         lens <4.18,
-        network <2.9,
+        network ==2.8.0.0 || >=3.0.1.0 && <3.1,
         parsec <3.2,
         random <1.2,
         split <0.3,
diff --git a/lib/DBus/Generation.hs b/lib/DBus/Generation.hs
--- a/lib/DBus/Generation.hs
+++ b/lib/DBus/Generation.hs
@@ -24,7 +24,6 @@
 import           Data.Word
 import           Language.Haskell.TH
 import           Prelude hiding (mapM)
-import           System.IO.Unsafe
 import           System.Posix.Types (Fd(..))
 
 type ClientBusPathR a = ReaderT (Client, T.BusName, T.ObjectPath) IO a
diff --git a/lib/DBus/Socket.hs b/lib/DBus/Socket.hs
--- a/lib/DBus/Socket.hs
+++ b/lib/DBus/Socket.hs
@@ -354,7 +354,7 @@
 
     let checkToken token = do
         (_, uid, _) <- socketTransportCredentials t
-        let wantToken = concatMap (printf "%02X" . ord) (show uid)
+        let wantToken = concatMap (printf "%02X" . ord) (maybe "XXX" show uid)
         if token == wantToken
             then do
                 transportPutLine t ("OK " ++ formatUUID uuid)
diff --git a/lib/DBus/Transport.hs b/lib/DBus/Transport.hs
--- a/lib/DBus/Transport.hs
+++ b/lib/DBus/Transport.hs
@@ -198,9 +198,9 @@
 
 -- | Returns the processID, userID, and groupID of the socket's peer.
 --
--- See 'getPeerCred'.
-socketTransportCredentials :: SocketTransport -> IO (CUInt, CUInt, CUInt)
-socketTransportCredentials (SocketTransport a s) = catchIOException a (getPeerCred s)
+-- See 'getPeerCredential'.
+socketTransportCredentials :: SocketTransport -> IO (Maybe CUInt, Maybe CUInt, Maybe CUInt)
+socketTransportCredentials (SocketTransport a s) = catchIOException a (getPeerCredential s)
 
 openUnix :: Address -> IO SocketTransport
 openUnix transportAddr = go where
diff --git a/tests/DBusTests/Transport.hs b/tests/DBusTests/Transport.hs
--- a/tests/DBusTests/Transport.hs
+++ b/tests/DBusTests/Transport.hs
@@ -256,11 +256,12 @@
     fdcountBefore @=? fdcountAfter
 
 test_OpenTcp_NotListening :: TestTree
-test_OpenTcp_NotListening = testCase "too-many" $ runResourceT $ do
+test_OpenTcp_NotListening = testCase "not-listening" $ runResourceT $ do
     fdcountBefore <- countFileDescriptors
 
     (addr, _, key) <- listenRandomIPv4
     release key
+
     liftIO $ assertThrows
         (\err -> and
             [ "Connection refused" `isInfixOf` transportErrorMessage err
@@ -537,8 +538,6 @@
     assertThrows
         (\err -> and
             [ "accept" `isInfixOf` transportErrorMessage err
-            , "socket" `isInfixOf` transportErrorMessage err
-            , "Closed" `isInfixOf` transportErrorMessage err
             , transportErrorAddress err == Just listeningAddr
             ])
         (transportAccept listener)
diff --git a/tests/DBusTests/Util.hs b/tests/DBusTests/Util.hs
--- a/tests/DBusTests/Util.hs
+++ b/tests/DBusTests/Util.hs
@@ -55,7 +55,6 @@
 import qualified Data.ByteString.Lazy
 import qualified Data.Map as Map
 import qualified Data.Text as T
-import qualified Network as N
 import qualified Network.Socket as NS
 import qualified System.Posix as Posix
 
@@ -97,7 +96,7 @@
     let sockAddr = NS.SockAddrUnix path
     (_, sock) <- allocate
         (NS.socket NS.AF_UNIX NS.Stream NS.defaultProtocol)
-        N.sClose
+        NS.close
     liftIO (NS.bind sock sockAddr)
     liftIO (NS.listen sock 1)
     _ <- register (removeFile path)
@@ -114,7 +113,7 @@
 
     (key, sock) <- allocate
         (NS.socket NS.AF_UNIX NS.Stream NS.defaultProtocol)
-        N.sClose
+        NS.close
 
     liftIO $ NS.bind sock sockAddr
     liftIO $ NS.listen sock 1
@@ -124,14 +123,19 @@
             ])
     return (addr, key)
 
-listenRandomIPv4 :: MonadResource m => m (Address, N.Socket, ReleaseKey)
+listenRandomIPv4 :: MonadResource m => m (Address, NS.Socket, ReleaseKey)
 listenRandomIPv4 = do
-    hostAddr <- liftIO $ NS.inet_addr "127.0.0.1"
-    let sockAddr = NS.SockAddrInet 0 hostAddr
+    let hints = NS.defaultHints
+            { NS.addrFlags = [NS.AI_NUMERICHOST]
+            , NS.addrFamily = NS.AF_INET
+            , NS.addrSocketType = NS.Stream
+            }
+    hostAddr <- liftIO $ NS.getAddrInfo (Just hints) (Just "127.0.0.1") Nothing
+    let sockAddr = NS.addrAddress $ head hostAddr
 
     (key, sock) <- allocate
         (NS.socket NS.AF_INET NS.Stream NS.defaultProtocol)
-        N.sClose
+        NS.close
     liftIO $ NS.bind sock sockAddr
     liftIO $ NS.listen sock 1
 
@@ -152,7 +156,7 @@
 
     (_, sock) <- allocate
         (NS.socket NS.AF_INET6 NS.Stream NS.defaultProtocol)
-        N.sClose
+        NS.close
     liftIO $ NS.bind sock sockAddr
     liftIO $ NS.listen sock 1
 
