on master help sign in
don't use APIs to be obsoleted.
commit283524fe1f3e450785837d57ef2be353f16026bc authorKazu Yamamoto <kazu@iij.ad.jp> dateFri 19 Jan 2018, 16:29 (9 years ago) parent05f5bb4
2 files changed+8−5
warp/Network/Wai/Handler/Warp/Run.hs+1−2 warp/Network/Wai/Handler/Warp/WithApplication.hs+7−3
warp/Network/Wai/Handler/Warp/Run.hs+1−2
@@ -19,8 +19,7 @@ import Data.IORef (IORef, newIORef, readIORef, writeIORef, atomicModifyIORef')
1919import Data.Streaming.Network (bindPortTCP)
2020import Foreign.C.Error (Errno(..), eCONNABORTED)
2121import GHC.IO.Exception (IOException(..))
22−import Network (Socket)
23−import Network.Socket (close, accept, withSocketsDo, SockAddr(SockAddrInet, SockAddrInet6), setSocketOption, SocketOption(..))
22+import Network.Socket (Socket, close, accept, withSocketsDo, SockAddr(SockAddrInet, SockAddrInet6), setSocketOption, SocketOption(..))
2423import qualified Network.Socket.ByteString as Sock
2524import Network.Wai
2625import Network.Wai.Internal (ResponseReceived (ResponseReceived))
warp/Network/Wai/Handler/Warp/WithApplication.hs+7−3
@@ -94,9 +94,13 @@ mkWaiter = do
9494-- @since 3.2.4
9595openFreePort :: IO (Port, Socket)
9696openFreePort = do
97− s <- socket AF_INET Stream defaultProtocol
98− localhost <- inet_addr "127.0.0.1"
99− bind s (SockAddrInet aNY_PORT localhost)
97+ let hints = defaultHints {
98+ addrFlags = [AI_PASSIVE]
99+ , addrSocketType = Stream
100+ }
101+ addr:_ <- getAddrInfo (Just hints) (Just "127.0.0.1") Nothing
102+ s <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
103+ bind s $ addrAddress addr
100104 listen s 1
101105 port <- socketPort s
102106 return (fromIntegral port, s)