xrcp: treat any 127.x.x.x IP address as local (#1682)

This commit is contained in:
Evgeny
2025-12-23 12:42:05 +00:00
committed by GitHub
parent 538dcb6a4c
commit bbe1c716e6
2 changed files with 6 additions and 6 deletions

View File

@@ -14,7 +14,7 @@ import Control.Logger.Simple
import Control.Monad import Control.Monad
import Data.ByteString (ByteString) import Data.ByteString (ByteString)
import Data.Default (def) import Data.Default (def)
import Data.List (delete, find) import Data.List (delete, find, partition)
import Data.Maybe (mapMaybe) import Data.Maybe (mapMaybe)
import Data.String (IsString) import Data.String (IsString)
import qualified Data.Text as T import qualified Data.Text as T
@@ -53,11 +53,11 @@ getLocalAddress preferred_ =
ok -> Just RCCtrlAddress {address = THIPv4 ok, interface = T.pack name} ok -> Just RCCtrlAddress {address = THIPv4 ok, interface = T.pack name}
mkLastLocalHost :: [RCCtrlAddress] -> [RCCtrlAddress] mkLastLocalHost :: [RCCtrlAddress] -> [RCCtrlAddress]
mkLastLocalHost addrs = case find localHost addrs of mkLastLocalHost addrs = other <> local
Nothing -> addrs
Just lh -> delete lh addrs <> [lh]
where 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 -> [RCCtrlAddress] -> [RCCtrlAddress]
preferAddress RCCtrlAddress {address, interface} addrs = preferAddress RCCtrlAddress {address, interface} addrs =

View File

@@ -9,7 +9,7 @@ import AgentTests.FunctionalAPITests (runRight)
import Control.Logger.Simple import Control.Logger.Simple
import Crypto.Random (ChaChaDRG) import Crypto.Random (ChaChaDRG)
import qualified Data.Aeson as J 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 Data.List.NonEmpty (NonEmpty (..))
import qualified Simplex.Messaging.Crypto as C import qualified Simplex.Messaging.Crypto as C
import Simplex.Messaging.Encoding.String (StrEncoding (..)) import Simplex.Messaging.Encoding.String (StrEncoding (..))