Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/Simplex/RemoteControl/Discovery.hs
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,17 @@ preferAddress RCCtrlAddress {address, interface} addrs =
startTLSServer :: Maybe Word16 -> TMVar (Maybe N.PortNumber) -> TLS.Credential -> TLS.ServerHooks -> (Transport.TLS 'TServer -> IO ()) -> IO (Async ())
startTLSServer port_ startedOnPort credentials hooks server = async . liftIO $ do
started <- newEmptyTMVarIO
bracketOnError (startTCPServer started Nothing $ maybe "0" show port_) (\_e -> setPort Nothing) $ \socket ->
bracketOnError (startTCPServerCtrl started $ maybe "0" show port_) (\_e -> setPort Nothing) $ \socket ->
ifM
(atomically $ readTMVar started)
(runServer started socket)
(setPort Nothing)
where
-- Bind preferring IPv6 (dual-stack) as before; if that fails (e.g. IPv6 is
-- disabled), fall back to IPv4 so the (IPv4-only) invitation stays reachable.
startTCPServerCtrl started port =
startTCPServer started Nothing port
`catchAny` \_ -> startTCPServer started (Just "0.0.0.0") port
runServer started socket = do
port <- N.socketPort socket
logInfo $ "System-assigned port: " <> tshow port
Expand Down
Loading