diff --git a/ADNS.hs b/ADNS.hs
--- a/ADNS.hs
+++ b/ADNS.hs
@@ -22,16 +22,15 @@
   )
   where
 
-import Network           ( HostName, PortID )
-import Network.Socket    ( HostAddress )
+import Network.Socket    ( HostName, HostAddress, PortNumber )
 import ADNS.Base
 import ADNS.Resolver
 
 queryA :: Resolver -> HostName -> IO (Maybe [HostAddress])
 queryA = query resolveA
 
--- | For quering SRV records. Result is the list of tuples (host, port).
-querySRV :: Resolver -> HostName -> IO (Maybe [(HostName, PortID)])
+-- | For querying SRV records. Result is the list of tuples (host, port).
+querySRV :: Resolver -> HostName -> IO (Maybe [(HostName, PortNumber)])
 querySRV = query resolveSRV
 
 queryPTR :: Resolver -> HostAddress -> IO (Maybe [HostName])
diff --git a/ADNS/Base.hsc b/ADNS/Base.hsc
--- a/ADNS/Base.hsc
+++ b/ADNS/Base.hsc
@@ -20,8 +20,7 @@
 module ADNS.Base where
 
 import Control.Exception        ( assert, bracket )
-import Network                  ( HostName )
-import Network.Socket           ( HostAddress, hostAddressToTuple )
+import Network.Socket           ( HostName, HostAddress, hostAddressToTuple )
 import Foreign
 import Foreign.C
 
@@ -342,7 +341,7 @@
   , expires :: CTime
       -- ^ Only defined if status is 'sOK', 'sNXDOMAIN', or 'sNODATA'.
   , rrs     :: [Response]
-      -- ^ The list will be empty if an error occured.
+      -- ^ The list will be empty if an error occurred.
   }
   deriving (Show)
 
@@ -612,7 +611,7 @@
 
 -- * Helper Functions
 
--- |Internel helper function to handle result passing from
+-- |Internal helper function to handle result passing from
 -- ADNS via @Ptr (Ptr a)@, and to generate human-readable IO
 -- exceptions in case of an error.
 
diff --git a/ADNS/Resolver.hs b/ADNS/Resolver.hs
--- a/ADNS/Resolver.hs
+++ b/ADNS/Resolver.hs
@@ -28,8 +28,7 @@
 import Data.List          ( sortBy )
 import Data.Map           ( Map )
 import qualified Data.Map as Map
-import Network
-import Network.Socket     ( HostAddress, hostAddressToTuple )
+import Network.Socket     ( HostName, HostAddress, PortNumber, hostAddressToTuple )
 import ADNS.Base
 
 -- |A 'Resolver' is an 'IO' computation which -- given the name
@@ -58,7 +57,7 @@
 
 -- |Resolve a hostname's 'SRV' records.
 
-resolveSRV :: Resolver -> HostName -> IO (Either Status [(HostName, PortID)])
+resolveSRV :: Resolver -> HostName -> IO (Either Status [(HostName, PortNumber)])
 resolveSRV resolver x = do
   Answer rc _ _ _ rs  <- resolver x SRV [] >>= takeMVar
   if rc /= sOK
@@ -67,7 +66,7 @@
        let cmp (RRSRV p1 _ _ _) (RRSRV p2 _ _ _) = compare p1 p2
            cmp _ _ = error $ showString "unexpected record in SRV lookup: " (show rs)
            rs' = sortBy cmp rs
-           as = [ (host, PortNumber $ toEnum port) | (RRSRV _ _ port host) <- rs' ]
+           as = [ (host, toEnum port) | (RRSRV _ _ port host) <- rs' ]
        return (Right as)
 
 -- |Get the 'PTR' records assigned to a host address. Note
diff --git a/example/adns-reverse-lookup.hs b/example/adns-reverse-lookup.hs
--- a/example/adns-reverse-lookup.hs
+++ b/example/adns-reverse-lookup.hs
@@ -13,7 +13,7 @@
 import Control.Concurrent       ( forkIO )
 import Control.Concurrent.Chan  ( Chan, newChan, writeChan, readChan )
 import System.Environment       ( getArgs )
-import Network.Socket           ( inet_ntoa )
+import Network.Socket           ( getNameInfo, NameInfoFlag(..), SockAddr(..) )
 import ADNS
 
 data CheckResult
@@ -22,9 +22,9 @@
   | DNSError String
 
 printResult :: CheckResult -> IO ()
-printResult (OK h a)       = do addr <- inet_ntoa a
+printResult (OK h a)       = do addr <- ntoa a
                                 putStrLn $ "OK: "   ++ h ++ " <-> " ++ addr
-printResult (NotOK h a h') = do addr <- inet_ntoa a
+printResult (NotOK h a h') = do addr <- ntoa a
                                 putStrLn $ "FAIL: " ++ h ++ " -> "  ++ addr ++ " -> " ++ show h'
 printResult (DNSError msg) = putStrLn $ "ERR: " ++ msg
 
@@ -47,5 +47,11 @@
       case ptr of
         Just names | host `elem` names -> writeChan chan (OK host addr)
                    | otherwise         -> writeChan chan (NotOK host addr names)
-        _                              -> returnError "PTR"
+        _                              -> ntoa addr >>= \str -> returnError ("PTR for "++str)
     _           -> returnError "A"
+
+ntoa :: HostAddress -> IO String
+ntoa ha = do r <- getNameInfo [NI_NUMERICHOST] True False (SockAddrInet 0 ha)
+             case r of
+               (Just hname, _) -> return hname
+               _               -> fail ("getNameInfo: unexpected failure printing address "++show ha)
diff --git a/example/adns-srv-test.hs b/example/adns-srv-test.hs
--- a/example/adns-srv-test.hs
+++ b/example/adns-srv-test.hs
@@ -2,13 +2,17 @@
     Resolve a hostnames' SRV records, then show it.
 
     TODO: Add the ability to perform multiple requests.
+
+    TODO: I am confused. This code does not appear to work. Running
+          "adns-srv-test _sip._udp.cryp.to" prints no useful data even though a
+          SRV record exists.
+
 -}
 
 module Main ( main ) where
 
 import Control.Monad            ( when )
 import System.Environment       ( getArgs )
-import Network                  ( PortID(..) )
 import ADNS
 
 main :: IO ()
@@ -18,10 +22,5 @@
   initResolver [Debug] $ \resolver -> do
     a <- querySRV resolver (head names)
     case a of
-        Just addr -> putStrLn $ "RESULT:\n" ++ concatMap (\b -> fst b ++ ":" ++ showPortID (snd b)) addr
+        Just addr -> putStrLn $ "RESULT:\n" ++ concatMap (\b -> fst b ++ ":" ++ show (snd b)) addr
         _         -> fail $ "Error in SRV " ++ show (head names)
-
-showPortID :: PortID -> String
-showPortID (PortNumber p) = show p
-showPortID (UnixSocket str) = str
-showPortID (Service str) = str
diff --git a/hsdns.cabal b/hsdns.cabal
--- a/hsdns.cabal
+++ b/hsdns.cabal
@@ -1,5 +1,5 @@
 Name:                   hsdns
-Version:                1.7.1
+Version:                1.8
 Copyright:              Peter Simons
 License:                LGPL-3
 License-File:           COPYING.LESSER
@@ -33,7 +33,7 @@
 Cabal-Version:          >= 1.8
 Build-Type:             Simple
 tested-with:            GHC == 7.0.4, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3
-                      , GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1
+                      , GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.3
 
 Source-Repository head
   Type:                 git
