on master help sign in
Remove use of deprecated network functionality
commit332df52c26e3b1a9f35fc214999f6b6997f365d2 authorNiklas Larsson <niklas@mm.st> dateSun 19 Aug 2018, 17:49 (8 years ago) parenta4a8ce2
3 files changed+20−19
idris.cabal+1−1 src/Idris/REPL.hs+9−5 src/Util/Net.hs+10−13
idris.cabal+1−1
@@ -291,7 +291,7 @@ Library
291291 , ieee754 >= 0.7 && < 0.9
292292 , megaparsec >= 6.2
293293 , mtl >= 2.1 && < 2.3
294− , network < 2.7
294+ , network < 2.8
295295 , optparse-applicative >= 0.13 && < 0.15
296296 , pretty < 1.2
297297 , process < 1.7
src/Idris/REPL.hs+9−5
@@ -81,7 +81,7 @@ import Idris.TypeSearch (searchByType)
8181import Idris.WhoCalls
8282import IRTS.CodegenCommon
8383import IRTS.Compiler
84−import Network
84+import Network.Socket hiding (defaultPort)
8585#if (MIN_VERSION_base(4,11,0))
8686import Prelude hiding (id, (.), (<$>), (<>))
8787#else
@@ -166,7 +166,8 @@ startServer port orig fn_in = do tid <- runIO $ forkIO (serverLoop port)
166166 fn = fromMaybe "" (listToMaybe fn_in)
167167
168168 loop fn ist sock
169− = do (h,_,_) <- accept sock
169+ = do (s, _) <- accept sock
170+ h <- socketToHandle s ReadWriteMode
170171 hSetEncoding h utf8
171172 cmd <- hGetLine h
172173 let isth = case idris_outputmode ist of
@@ -218,9 +219,11 @@ processNetCmd orig i h fn cmd
218219runClient :: Maybe PortNumber -> String -> IO ()
219220runClient port str = withSocketsDo $ do
220221 let port' = fromMaybe defaultPort port
221− res <- X.try (connectTo "localhost" $ PortNumber port')
222+ s <- socket AF_INET Stream defaultProtocol
223+ res <- X.try (connect s (SockAddrInet port' $ tupleToHostAddress (127,0,0,1)))
222224 case res of
223− Right h -> do
225+ Right () -> do
226+ h <- socketToHandle s ReadWriteMode
224227 hSetEncoding h utf8
225228 hPutStrLn h str
226229 resp <- hGetResp "" h
@@ -245,7 +248,8 @@ initIdemodeSocket :: IO Handle
245248initIdemodeSocket = do
246249 (sock, port) <- listenOnLocalhostAnyPort
247250 putStrLn $ show port
248− (h, _, _) <- accept sock
251+ (s, _) <- accept sock
252+ h <- socketToHandle s ReadWriteMode
249253 hSetEncoding h utf8
250254 return h
251255
src/Util/Net.hs+10−13
@@ -8,36 +8,33 @@ Maintainer : The Idris Community.
88module Util.Net (listenOnLocalhost, listenOnLocalhostAnyPort) where
99
1010import Control.Exception (bracketOnError)
11−import Network hiding (socketPort)
12−import Network.BSD (getProtocolNumber)
13−import Network.Socket hiding (sClose)
14−
11+import Network.Socket
1512-- Copied from upstream impl of listenOn
1613-- bound to localhost interface instead of iNADDR_ANY
1714listenOnLocalhost :: PortNumber -> IO Socket
18−listenOnLocalhost port = do
19− proto <- getProtocolNumber "tcp"
20− localhost <- inet_addr "127.0.0.1"
15+listenOnLocalhost port = do
16+ let hints = defaultHints { addrSocketType = Stream }
17+ localhost:_ <- getAddrInfo (Just hints) (Just "127.0.0.1") (Just $ show port)
2118 bracketOnError
22− (socket AF_INET Stream proto)
19+ (socket AF_INET Stream defaultProtocol)
2320 (close)
2421 (\sock -> do
2522 setSocketOption sock ReuseAddr 1
26− bind sock (SockAddrInet port localhost)
23+ bind sock (addrAddress localhost)
2724 listen sock maxListenQueue
2825 return sock
2926 )
3027
3128listenOnLocalhostAnyPort :: IO (Socket, PortNumber)
3229listenOnLocalhostAnyPort = do
33− proto <- getProtocolNumber "tcp"
34− localhost <- inet_addr "127.0.0.1"
30+ let hints = defaultHints { addrSocketType = Stream }
31+ localhost:_ <- getAddrInfo (Just hints) (Just "127.0.0.1") (Just "0")
3532 bracketOnError
36− (socket AF_INET Stream proto)
33+ (socket AF_INET Stream defaultProtocol)
3734 (close)
3835 (\sock -> do
3936 setSocketOption sock ReuseAddr 1
40− bind sock (SockAddrInet aNY_PORT localhost)
37+ bind sock (addrAddress localhost)
4138 listen sock maxListenQueue
4239 port <- socketPort sock
4340 return (sock, port)