diff options
author | Lorn Potter <lorn.potter@gmail.com> | 2014-11-07 15:38:32 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2014-11-07 10:12:40 +0100 |
commit | 7a593e0d00abd0d8930fd7cdd8334a42fca7da6d (patch) | |
tree | f9c4c55a34b0ebd52ebefd3867e1bb50fb1bafc9 | |
parent | a61247723a7b8b371a7328d1d7ec5ca4a5ff3d84 (diff) |
make qtbearer networkmanager defaultConfiguration more reliable
The defaultConfiguration could switch and be either active connection,
so we determine the default should be what has the default route.
Change-Id: I194f27b60e7a3598eca2ff09c2225ba1a46564d9
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
3 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp index 6be682878d..a8244f05cf 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp @@ -953,6 +953,15 @@ QNetworkSessionPrivate *QNetworkManagerEngine::createSessionBackend() QNetworkConfigurationPrivatePointer QNetworkManagerEngine::defaultConfiguration() { + QHashIterator<QString, QNetworkManagerConnectionActive*> i(activeConnectionsList); + while (i.hasNext()) { + i.next(); + QNetworkManagerConnectionActive *activeConnection = i.value(); + if ((activeConnection->defaultRoute() || activeConnection->default6Route())) { + return accessPointConfigurations.value(activeConnection->connection().path()); + } + } + return QNetworkConfigurationPrivatePointer(); } diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp index dd7000bfb8..dc3b71ec8e 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp @@ -1282,6 +1282,13 @@ bool QNetworkManagerConnectionActive::defaultRoute() const return false; } +bool QNetworkManagerConnectionActive::default6Route() const +{ + if (propertyMap.contains("Default6")) + return propertyMap.value("Default6").toBool(); + return false; +} + void QNetworkManagerConnectionActive::propertiesSwap(QMap<QString,QVariant> map) { QMapIterator<QString, QVariant> i(map); diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h index 5e3c1c85f1..da909c443a 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h @@ -499,6 +499,7 @@ public: QStringList devices() const; quint32 state() const; bool defaultRoute() const; + bool default6Route() const; bool setConnections(); bool isValid(); |