From c6a3e9b81669c8c15237bfba329bf0f894df5380 Mon Sep 17 00:00:00 2001 From: Asif Mahmud Shimon Date: Thu, 27 Aug 2020 11:36:55 +0600 Subject: [PATCH] Internet accessibility checking done by ping method --- src/libcalamares/network/Manager.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/libcalamares/network/Manager.cpp b/src/libcalamares/network/Manager.cpp index ce7f59571..57faae28c 100644 --- a/src/libcalamares/network/Manager.cpp +++ b/src/libcalamares/network/Manager.cpp @@ -149,18 +149,23 @@ Manager::hasInternet() bool Manager::checkHasInternet() { - bool hasInternet = d->nam()->networkAccessible() == QNetworkAccessManager::Accessible; - if ( !hasInternet && ( d->nam()->networkAccessible() == QNetworkAccessManager::UnknownAccessibility ) ) + d->m_hasInternet = synchronousPing( d->m_hasInternetUrl ); + +// For earlier Qt versions (< 5.15.0), set the accessibility flag to +// NotAccessible if synchronous ping has failed, so that any module +// using Qt's networkAccessible method to determine whether or not +// internet connection is actually avaialable won't get confused over +// virtualization technologies. +#if ( QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 ) ) + if ( !d->m_hasInternet ) { - hasInternet = synchronousPing( d->m_hasInternetUrl ); + d->nam()->setNetworkAccessible( QNetworkAccessManager::NotAccessible ); } - if ( hasInternet != d->m_hasInternet ) - { - d->m_hasInternet = hasInternet; - emit hasInternetChanged( hasInternet ); - } - return hasInternet; +#endif + + emit hasInternetChanged( d->m_hasInternet ); + return d->m_hasInternet; } void