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 +3/−3
- src/HsDev/Server/Base.hs +18/−7
- src/HsDev/Server/Commands.hs +2/−5
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