summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@gmail.com>2014-11-07 15:38:32 +1000
committerLorn Potter <lorn.potter@gmail.com>2014-11-07 10:12:40 +0100
commit7a593e0d00abd0d8930fd7cdd8334a42fca7da6d (patch)
treef9c4c55a34b0ebd52ebefd3867e1bb50fb1bafc9 /src/plugins
parenta61247723a7b8b371a7328d1d7ec5ca4a5ff3d84 (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>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp9
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp7
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerservice.h1
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();