diff --git a/ftp-client.cabal b/ftp-client.cabal
--- a/ftp-client.cabal
+++ b/ftp-client.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name: ftp-client
-version: 0.5.0.1
+version: 0.5.1.0
 license: PublicDomain
 license-file: LICENSE
 maintainer: mrobinson7627@gmail.com
diff --git a/src/Network/FTP/Client.hs b/src/Network/FTP/Client.hs
--- a/src/Network/FTP/Client.hs
+++ b/src/Network/FTP/Client.hs
@@ -319,7 +319,9 @@
     -> S.AddrInfo
     -> m (S.Socket, S.AddrInfo)
 createSocket host portNum hints = do
-    addr:_ <- liftIO $ S.getAddrInfo (Just hints) host (Just $ show portNum)
+    addr <- liftIO $ do
+      a:_ <- S.getAddrInfo (Just hints) host (Just $ show portNum)
+      return a
     debugPrint $ "Addr: " <> show addr
     sock <- liftIO $ S.socket
         (S.addrFamily addr)
@@ -426,7 +428,9 @@
     -> (S.Socket -> m a)
     -> m a
 withDataSocketActive h f = withSocketActive $ \socket -> do
-    (S.SockAddrInet sPort sHost) <- liftIO $ S.getSocketName socket
+    (sPort, sHost) <- liftIO $ do
+      (S.SockAddrInet p h) <- S.getSocketName socket
+      return (p,h)
     port h sHost sPort
     f socket
 
@@ -592,7 +596,9 @@
         resp <- sendCommand ch cmd
         ensureSucessfulData ch resp
         acceptedSock <- acceptData pa socket
-        (S.SockAddrInet sPort sHost) <- liftIO $ S.getSocketName acceptedSock
+        (sPort, sHost) <- liftIO $ do
+          (S.SockAddrInet p h) <- S.getSocketName acceptedSock
+          return (p, h)
         let (h1, h2, h3, h4) = S.hostAddressToTuple sHost
             hostName = intercalate "." $ (show . fromEnum) <$> [h1, h2, h3, h4]
         h <- liftIO $ S.socketToHandle acceptedSock SIO.ReadWriteMode
