From d0d1d7403377363a101d4f1781d06a9b44787d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 24 Feb 2022 10:09:31 +0200 Subject: [PATCH] Fix check for IPV6 support without certain features MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without features getifaddrs and ipv6ifname we cannot get correct IPV6 information for interfaces. Pick-to: 6.2 6.3 Change-Id: I7f8c4e68d345160d218fde8db640440f3324014e Reviewed-by: MÃ¥rten Nordheim --- tests/auto/network-settings.h | 4 ++++ .../qnetworkinterface/tst_qnetworkinterface.cpp | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/auto/network-settings.h b/tests/auto/network-settings.h index d261c4afb5..99a30f51f7 100644 --- a/tests/auto/network-settings.h +++ b/tests/auto/network-settings.h @@ -118,6 +118,7 @@ public: static bool hasIPv6() { #ifdef Q_OS_UNIX + #if !defined(QT_NO_GETIFADDRS) && !defined(QT_NO_IPV6IFNAME) int s = ::socket(AF_INET6, SOCK_DGRAM, 0); if (s == -1) return false; @@ -132,6 +133,9 @@ public: } } ::close(s); + #else + return false; + #endif #endif return true; } diff --git a/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp index e18c50afbd..b5beee5499 100644 --- a/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp +++ b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp @@ -71,9 +71,14 @@ tst_QNetworkInterface::~tst_QNetworkInterface() bool tst_QNetworkInterface::isIPv6Working() { - QUdpSocket socket; - socket.connectToHost(QHostAddress::LocalHostIPv6, 1234); - return socket.state() == QAbstractSocket::ConnectedState || socket.waitForConnected(100); + // Version without following cannot get IPV6 information + #if !defined(QT_NO_GETIFADDRS) && !defined(QT_NO_IPV6IFNAME) + QUdpSocket socket; + socket.connectToHost(QHostAddress::LocalHostIPv6, 1234); + return socket.state() == QAbstractSocket::ConnectedState || socket.waitForConnected(100); + #else + return false; + #endif } void tst_QNetworkInterface::initTestCase()