diff --git a/src/Simplex/RemoteControl/Discovery.hs b/src/Simplex/RemoteControl/Discovery.hs index 9eb714029..c97cfc48c 100644 --- a/src/Simplex/RemoteControl/Discovery.hs +++ b/src/Simplex/RemoteControl/Discovery.hs @@ -14,7 +14,7 @@ import Control.Logger.Simple import Control.Monad import Data.ByteString (ByteString) import Data.Default (def) -import Data.List (delete, find) +import Data.List (delete, find, partition) import Data.Maybe (mapMaybe) import Data.String (IsString) import qualified Data.Text as T @@ -53,11 +53,11 @@ getLocalAddress preferred_ = ok -> Just RCCtrlAddress {address = THIPv4 ok, interface = T.pack name} mkLastLocalHost :: [RCCtrlAddress] -> [RCCtrlAddress] -mkLastLocalHost addrs = case find localHost addrs of - Nothing -> addrs - Just lh -> delete lh addrs <> [lh] +mkLastLocalHost addrs = other <> local where - localHost RCCtrlAddress {address = a} = a == THIPv4 (127, 0, 0, 1) + (local, other) = partition localHost addrs + localHost RCCtrlAddress {address = THIPv4 (127, _, _, _)} = True + localHost _ = False preferAddress :: RCCtrlAddress -> [RCCtrlAddress] -> [RCCtrlAddress] preferAddress RCCtrlAddress {address, interface} addrs = diff --git a/tests/RemoteControl.hs b/tests/RemoteControl.hs index d4987b33b..134b2f255 100644 --- a/tests/RemoteControl.hs +++ b/tests/RemoteControl.hs @@ -9,7 +9,7 @@ import AgentTests.FunctionalAPITests (runRight) import Control.Logger.Simple import Crypto.Random (ChaChaDRG) import qualified Data.Aeson as J -import Data.ByteString.Lazy.Char8 as LB +import qualified Data.ByteString.Lazy.Char8 as LB import Data.List.NonEmpty (NonEmpty (..)) import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Encoding.String (StrEncoding (..))