aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/Asio/IpNetwork.cpp18
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())