@@ -58,31 +58,34 @@ bool NetOrigin::isLocalAddress(const QHostAddress& ipAddress, const QHostAddress
5858 return true ;
5959 }
6060
61- // Convert to IPv4 to check, if an IPv6 address is an IPv4 mapped address
62- QHostAddress ipv4Address (address.toIPv4Address ());
63- if (ipv4Address != QHostAddress::AnyIPv4) // ipv4Address is not "0.0.0.0"
61+ // Convert IPv4-mapped IPv6 to pure IPv4
62+ QHostAddress const ipv4Address (address.toIPv4Address ());
63+ if (ipv4Address != QHostAddress::AnyIPv4)
6464 {
6565 address = ipv4Address;
6666 }
6767
68- QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces ();
69- for (const QNetworkInterface &networkInterface : allInterfaces) {
70- QList<QNetworkAddressEntry> addressEntries = networkInterface.addressEntries ();
71- for (const QNetworkAddressEntry &localNetworkAddressEntry : addressEntries) {
72- QHostAddress localIP = localNetworkAddressEntry.ip ();
68+ QList<QNetworkInterface> const allInterfaces = QNetworkInterface::allInterfaces ();
69+ for (const QNetworkInterface &networkInterface : allInterfaces)
70+ {
71+ QList<QNetworkAddressEntry> const addressEntries = networkInterface.addressEntries ();
72+ for (const QNetworkAddressEntry &localNetworkAddressEntry : addressEntries)
73+ {
74+ QHostAddress const localIP = localNetworkAddressEntry.ip ();
7375
74- if (localIP.protocol () != QAbstractSocket::NetworkLayerProtocol::IPv4Protocol)
76+ // Skip protocol mismatch
77+ if (localIP.protocol () != address.protocol ())
7578 {
7679 continue ;
7780 }
7881
79- bool isInSubnet = address.isInSubnet (localIP, localNetworkAddressEntry.prefixLength ());
80- if (isInSubnet)
82+ if (address.isInSubnet (localIP, localNetworkAddressEntry.prefixLength ()))
8183 {
8284 return true ;
8385 }
8486 }
8587 }
88+
8689 return false ;
8790}
8891
0 commit comments