hedgewars-1.0.0-server-network3
authorDebian Games Team <pkg-games-devel@lists.alioth.debian.org>
Tue, 20 Oct 2020 19:49:28 +0000 (20:49 +0100)
committerGianfranco Costamagna <locutusofborg@debian.org>
Tue, 20 Oct 2020 19:49:28 +0000 (20:49 +0100)
Origin: https://bugzilla.redhat.com/show_bug.cgi?id=1853122

===================================================================

Gbp-Pq: Name hedgewars-1.0.0-server-network3.patch

gameServer/Actions.hs
gameServer/CMakeLists.txt
gameServer/ClientIO.hs
gameServer/CoreTypes.hs
gameServer/OfficialServer/checker.hs
gameServer/Utils.hs
gameServer/hedgewars-server.cabal
gameServer/hedgewars-server.hs

index 125d6ea83299b833138ab4cddd06c77a5d5d895e..c42d17b9a931d6bad1bdad0596fcfca3ce7f5d5e 100644 (file)
@@ -709,7 +709,7 @@ processAction RestartServer = do
         args <- gets (runArgs . serverInfo)
         io $ do
             noticeM "Core" "Closing listening socket"
-            sClose sock
+            close sock
             noticeM "Core" "Spawning new server"
             _ <- createProcess (proc "./hedgewars-server" args)
             return ()
index 5f2c8825634e5f00f4ae39dba33c646335873e79..e71650c70c95db60468a03e47194566e390e347e 100644 (file)
@@ -9,7 +9,8 @@ check_haskell_package_exists(base "Control.Exception" mask 1)
 check_haskell_package_exists(containers "Data.Map" size 1)
 check_haskell_package_exists(vector "Data.Vector" length 1)
 check_haskell_package_exists(bytestring "Data.ByteString" pack 1)
-check_haskell_package_exists(network "Network.BSD" getHostName 0)
+check_haskell_package_exists(network "Network.Socket" defaultHints 0)
+check_haskell_package_exists(network-bsd "Network.BSD" getHostName 0)
 check_haskell_package_exists(time "Data.Time" getCurrentTime 0)
 check_haskell_package_exists(mtl "Control.Monad.State" fix 1)
 check_haskell_package_exists(sandi "Codec.Binary.Base64" encode 1)
index 46dd40ed9f977456c2832e2589951bc7c7499f6f..0c97bde932b9701e79ae2b5cad5fbde38bd495d9 100644 (file)
@@ -23,7 +23,7 @@ import qualified Control.Exception as Exception
 import Control.Monad.State
 import Control.Concurrent.Chan
 import Control.Concurrent
-import Network
+import Network.Socket hiding (recv)
 import Network.Socket.ByteString
 import qualified Data.ByteString.Char8 as B
 ----------------
@@ -90,7 +90,7 @@ clientSendLoop s tId chan ci = do
             sendAll s $ B.unlines answer `B.snoc` '\n'
 
     if isQuit answer then
-        sClose s
+        close s
         else
         clientSendLoop s tId chan ci
 
index f547df483ac4c23936cd0b6a96dc872621be241b..72f35807e3026bcb0e3641520355b1945adce300 100644 (file)
@@ -23,7 +23,7 @@ import Control.Concurrent
 import Data.Word
 import qualified Data.Map as Map
 import Data.Time
-import Network
+import Network.Socket
 import Data.Function
 import Data.ByteString.Char8 as B
 import Data.Unique
index 37df3208b9ea389330c8a7c4f5b17046a537956b..b4ecb8fc57276ddcd6684240a0077f2dd5abd1b0 100644 (file)
@@ -28,8 +28,7 @@ import System.Directory
 import Control.Monad.State
 import Control.Concurrent.Chan
 import Control.Concurrent
-import Network
-import Network.BSD
+import Network.BSD hiding (recv)
 import Network.Socket hiding (recv, sClose)
 import Network.Socket.ByteString
 import qualified Data.ByteString.Char8 as B
@@ -207,7 +206,7 @@ main = withSocketsDo . forever $ do
 
     Exception.bracket
         setupConnection
-        (\s -> noticeM "Core" "Shutting down" >> sClose s)
+        (\s -> noticeM "Core" "Shutting down" >> close s)
         (session login password (d ++ "/.hedgewars") exeFullname dataPrefix)
     where
         setupConnection = do
index 3d81b7f7c6221178de6a97460f20efa020a2ec6e..9fd80c01baac0f1489e3046a09680ef7f912826e 100644 (file)
@@ -41,11 +41,7 @@ import CoreTypes
 
 
 sockAddr2String :: SockAddr -> IO B.ByteString
-sockAddr2String (SockAddrInet _ hostAddr) = liftM B.pack $ inet_ntoa hostAddr
-sockAddr2String (SockAddrInet6 _ _ (a, b, c, d) _) =
-    return $ B.pack $ (foldr1 (.)
-        $ List.intersperse (':':)
-        $ concatMap (\n -> (\(a0, a1) -> [showHex a0, showHex a1]) $ divMod n 65536) [a, b, c, d]) []
+sockAddr2String = liftM (B.pack . fromJust . fst) . getNameInfo [] True False
 
 maybeRead :: Read a => String -> Maybe a
 maybeRead s = case reads s of
index 3c7f2418c914f57ff6a8f90468a372d3ca0ee2ae..9f764fd997a4ab60dc3d91adce89d6da5459c2df 100644 (file)
@@ -57,7 +57,8 @@ Executable checker
     containers,
     vector,
     bytestring,
-    network >= 2.3 && < 3.0,
+    network >= 2.3,
+    network-bsd,
     mtl >= 2,
     sandi,
     hslogger,
index e47ae2891dc9328247d58fdbe6307c1ac17b3dcd..7e6ab8fa38982392616ddae0296afbe665aab5ac 100644 (file)
@@ -50,10 +50,11 @@ server si = do
     proto <- getProtocolNumber "tcp"
     E.bracket
         (socket AF_INET Stream proto)
-        sClose
+        close
         (\sock -> do
             setSocketOption sock ReuseAddr 1
-            bindSocket sock (SockAddrInet (listenPort si) iNADDR_ANY)
+            iNADDR_ANY <- addrAddress . head <$> getAddrInfo Nothing (Just "0") (Just (show (listenPort si)))
+            bind sock iNADDR_ANY
             listen sock maxListenQueue
             startServer si{serverSocket = Just sock}
         )