Skip to content

Commit ddd8f5e

Browse files
committed
Fixes - WebUI unreachable via IPv6 (#1871)
1 parent 68a630a commit ddd8f5e

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased](https://github.com/hyperion-project/hyperion.ng/compare/2.1.0...HEAD)
88

9+
### ⚠️ Breaking Changes
10+
11+
### ✨ Added
12+
13+
### 🔧 Changed
14+
15+
- **Fixes:**
16+
- WebUI unreachable via IPv6 (#1871)
17+
18+
### 🗑️ Removed
19+
920
## [2.1.0](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.1.0) - 2025-06-12
1021

1122
### ⚠️ Breaking Changes

libsrc/utils/NetOrigin.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)