packages feed

hsdev 0.3.3.3 → 0.3.3.4

raw patch · 3 files changed

+23/−15 lines, 3 filesdep ~networkPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: network

API changes (from Hackage documentation)

- HsDev.Server.Base: sockAddr :: ConnectionPort -> HostAddress -> SockAddr
+ HsDev.Server.Base: bindSocket :: Socket -> String -> ConnectionPort -> IO ()
+ HsDev.Server.Base: connectSocket :: Socket -> String -> ConnectionPort -> IO ()

Files

hsdev.cabal view
@@ -1,5 +1,5 @@ name:                hsdev
-version:             0.3.3.3
+version:             0.3.3.4
 synopsis:            Haskell development library
 description:
   Haskell development library and tool with support of autocompletion, symbol info, go to declaration, find references, hayoo search etc.
@@ -193,7 +193,7 @@     monad-control                     >= 1.0.1.0 && < 1.1,
     monad-loops                       >= 0.4.3 && < 0.5,
     mtl                               >= 2.2.1 && < 2.3,
-    network                           >= 3.0 && < 3.1,
+    network                           >= 2.8 && < 3.1,
     network-uri                      >= 2.6 && < 2.7,
     optparse-applicative              >= 0.12.1.0 && < 0.16,
     process                           >= 1.4.2.0 && < 1.7,
@@ -231,7 +231,7 @@     filepath                          >= 1.4.1.0 && < 1.5,
     monad-loops                       >= 0.4.3 && < 0.5,
     mtl                               >= 2.2.1 && < 2.3,
-    network                           >= 3.0 && < 3.1,
+    network                           >= 2.8 && < 3.1,
     optparse-applicative              >= 0.12.1.0 && < 0.16,
     process                           >= 1.4.2.0 && < 1.7,
     text                              >= 1.2.2.2 && < 1.3,
src/HsDev/Server/Base.hs view
@@ -9,7 +9,7 @@ 	findPath,
 	processRequest, processClient, processClientSocket,
 
-	unMmap, makeSocket, sockAddr,
+	unMmap, makeSocket, bindSocket, connectSocket,
 
 	module HsDev.Server.Types,
 	module HsDev.Server.Message
@@ -38,7 +38,7 @@ import qualified System.Log.Simple.Base as Log (level_)
 import qualified System.Log.Simple as Log
 import qualified Network.HTTP.Client as HTTP
-import Network.Socket
+import Network.Socket hiding (bindSocket)
 import qualified Network.Socket.ByteString.Lazy as Net (getContents, sendAll)
 import System.FilePath
 import System.IO
@@ -185,8 +185,7 @@ 		bracket (liftIO $ makeSocket (serverPort sopts)) (liftIO . close) $ \s -> do
 			liftIO $ do
 				setSocketOption s ReuseAddr 1
-				sockAddr':_ <- getAddrInfo (Just defaultHints) (Just "127.0.0.1") (Just $ show $ serverPort sopts)
-				bind s (addrAddress sockAddr')
+				bindSocket s "127.0.0.1" (serverPort sopts)
 				listen s maxListenQueue
 			forever $ logAsync (Log.sendLog Log.Fatal . fromString) $ logIO "exception: " (Log.sendLog Log.Error . fromString) $ do
 				Log.sendLog Log.Trace "accepting connection..."
@@ -401,9 +400,21 @@ makeSocket (NetworkPort _) = socket AF_INET Stream defaultProtocol
 makeSocket (UnixPort _) = socket AF_UNIX Stream defaultProtocol
 
-sockAddr :: ConnectionPort -> HostAddress -> SockAddr
-sockAddr (NetworkPort p) addr = SockAddrInet (fromIntegral p) addr
-sockAddr (UnixPort s) _ = SockAddrUnix s
+bindSocket :: Socket -> String -> ConnectionPort -> IO ()
+bindSocket s _ (UnixPort p) = bind s (SockAddrUnix p)
+bindSocket s host (NetworkPort p) = do
+	sockAddr':_ <- getAddrInfo (Just hints) (Just host) (Just $ show p)
+	bind s (addrAddress sockAddr')
+	where
+		hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Stream }
+
+connectSocket :: Socket -> String -> ConnectionPort -> IO ()
+connectSocket s _ (UnixPort p) = connect s (SockAddrUnix p)
+connectSocket s host (NetworkPort p) = do
+	sockAddr':_ <- getAddrInfo (Just hints) (Just host) (Just $ show p)
+	connect s (addrAddress sockAddr')
+	where
+		hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Stream }
 
 unlink :: ConnectionPort -> IO ()
 unlink (NetworkPort _) = return ()
src/HsDev/Server/Commands.hs view
@@ -21,7 +21,6 @@ import qualified Data.ByteString.Lazy.Char8 as L
 import Data.Maybe
 import Network.Socket hiding (connect)
-import qualified Network.Socket as Net hiding (send)
 import System.Directory
 import System.Exit
 import System.IO
@@ -73,8 +72,7 @@ 			_ <- traverse parseData input -- FIXME: Not used!
 
 			s <- makeSocket (clientPort copts)
-			sockAddr':_ <- getAddrInfo (Just defaultHints) (Just "127.0.0.1") (Just $ show $ clientPort copts)
-			Net.connect s (addrAddress sockAddr')
+			connectSocket s "127.0.0.1" (clientPort copts)
 			bracket (socketToHandle s ReadWriteMode) hClose $ \h -> do
 				L.hPutStrLn h $ encode $ Message Nothing $ Request c curDir noFile (clientTimeout copts) (clientSilent copts)
 				hFlush h
@@ -152,8 +150,7 @@ runServerCommand (Connect copts) = do
 	curDir <- getCurrentDirectory
 	s <- makeSocket $ clientPort copts
-	sockAddr':_ <- getAddrInfo (Just defaultHints) (Just "127.0.0.1") (Just $ show $ clientPort copts)
-	Net.connect s (addrAddress sockAddr')
+	connectSocket s "127.0.0.1" (clientPort copts)
 	bracket (socketToHandle s ReadWriteMode) hClose $ \h -> forM_ [(1 :: Integer)..] $ \i -> ignoreIO $ do
 		input' <- hGetLineBS stdin
 		case decodeMsg input' of