From 9206fa847ec1f39626a3812cb92bdeb695e03109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20K=C5=82eczek?= Date: Tue, 5 May 2026 06:26:38 +0200 Subject: [PATCH] refactor: Simplify App.initServerSocket This change gets rid of unnecessary explicit bindRandomPortTCP in initServerSocket. Returned port value was ignored in removed code anyway as assigned port retrieval from an open socket is handled elsewhere. --- src/PostgREST/App.hs | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index 4f7305797a..79c9168264 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -62,8 +62,7 @@ import PostgREST.Version (docsVersion, prettyVersion) import qualified Data.ByteString.Char8 as BS import qualified Data.List as L -import Data.Streaming.Network (bindPortTCP, - bindRandomPortTCP) +import Data.Streaming.Network (bindPortTCP) import qualified Data.Text as T import qualified Network.HTTP.Types as HTTP import qualified Network.Socket as NS @@ -240,33 +239,15 @@ type AppSockets = (NS.Socket, Maybe NS.Socket) initSockets :: AppConfig -> IO AppSockets initSockets AppConfig{..} = do - let - cfg'usp = configServerUnixSocket - cfg'uspm = configServerUnixSocketMode - cfg'host = configServerHost - cfg'port = configServerPort - cfg'adminHost = configAdminServerHost - cfg'adminPort = configAdminServerPort - - sock <- case cfg'usp of + sock <- case configServerUnixSocket of -- I'm not using `streaming-commons`' bindPath function here because it's not defined for Windows, -- but we need to have runtime error if we try to use it in Windows, not compile time error - Just path -> createAndBindDomainSocket path cfg'uspm - Nothing -> do - (_, sock) <- - if cfg'port /= 0 - then do - sock <- bindPortTCP cfg'port (fromString $ T.unpack cfg'host) - pure (cfg'port, sock) - else do - -- explicitly bind to a random port, returning bound port number - (num, sock) <- bindRandomPortTCP (fromString $ T.unpack cfg'host) - pure (num, sock) - pure sock - - adminSock <- case cfg'adminPort of + Just path -> createAndBindDomainSocket path configServerUnixSocketMode + Nothing -> bindPortTCP configServerPort (fromString $ T.unpack configServerHost) + + adminSock <- case configAdminServerPort of Just adminPort -> do - adminSock <- bindPortTCP adminPort (fromString $ T.unpack cfg'adminHost) + adminSock <- bindPortTCP adminPort (fromString $ T.unpack configAdminServerHost) pure $ Just adminSock Nothing -> pure Nothing