diff options
-rw-r--r-- | src/common/Asio/IpNetwork.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/common/Asio/IpNetwork.cpp b/src/common/Asio/IpNetwork.cpp index 5e5dcb9ac22..5de167e7a77 100644 --- a/src/common/Asio/IpNetwork.cpp +++ b/src/common/Asio/IpNetwork.cpp @@ -80,7 +80,15 @@ Optional<std::size_t> SelectAddressForClient(boost::asio::ip::address const& cli { boost::asio::ip::address const& address = addresses[i]; - if (IsInLocalNetwork(address)) + if (address.is_loopback()) + { + if (address.is_v6() && !loopbackIpv6Index) + loopbackIpv6Index = i; + + if (address.is_v4() && !loopbackIpv4Index) + loopbackIpv4Index = i; + } + else if (IsInLocalNetwork(address)) { if (address.is_v6() && !localIpv6Index) localIpv6Index = i; @@ -97,14 +105,6 @@ Optional<std::size_t> SelectAddressForClient(boost::asio::ip::address const& cli externalIpv4Index = i; } - if (address.is_loopback()) - { - if (address.is_v6() && !loopbackIpv6Index) - loopbackIpv6Index = i; - - if (address.is_v4() && !loopbackIpv4Index) - loopbackIpv4Index = i; - } } if (IsInLocalNetwork(clientAddress) || clientAddress.is_loopback()) |