diff --git a/src/PostgREST/Admin.hs b/src/PostgREST/Admin.hs index 1c425b898..ced8c7e54 100644 --- a/src/PostgREST/Admin.hs +++ b/src/PostgREST/Admin.hs @@ -28,15 +28,14 @@ runAdmin appState maybeAdminSocket getSocketREST settings = do conf <- getConfig appState whenJust maybeAdminSocket $ \adminSocket -> do address <- resolveSocketToAddress adminSocket - observer $ AdminStartObs address - void . forkIO $ Warp.runSettingsSocket (adminServerSettings conf) adminSocket adminApp + void . forkIO $ Warp.runSettingsSocket (adminServerSettings conf address) adminSocket adminApp where adminApp = admin appState getSocketREST observer = AppState.getObserver appState - adminServerSettings config = - case configAdminServerPort config of - Just p -> settings & Warp.setPort p - Nothing -> settings + adminServerSettings config addr= + settings + & Warp.setBeforeMainLoop (observer $ AdminStartObs addr) + & maybe identity Warp.setPort (configAdminServerPort config) -- | PostgREST admin application admin :: AppState.AppState -> IO (Maybe NS.Socket) -> Wai.Application diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index 3f02237ac..5824af899 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -29,8 +29,8 @@ import Data.Either.Combinators (mapLeft, whenLeft) import Data.IORef (atomicWriteIORef, newIORef, readIORef) import Data.String (IsString (..), String) -import Network.Wai.Handler.Warp (defaultSettings, setHost, - setOnException, setPort, +import Network.Wai.Handler.Warp (defaultSettings, setBeforeMainLoop, + setHost, setOnException, setPort, setServerName) import qualified Data.Text.Encoding as T @@ -104,12 +104,12 @@ run appState = do let app = postgrest appState (AppState.schemaCacheLoader appState) address <- resolveSocketToAddress mainSocket - observer $ AppServerAddressObs address let appServerSettings = serverSettings conf & setPort (configServerPort conf) & setOnException onWarpException + & setBeforeMainLoop (observer $ AppServerAddressObs address) Warp.runSettingsSocket appServerSettings mainSocket app where