diff -ub src/plugins/bearer/networkmanager.old/qnetworkmanagerengine.cpp src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp --- src/plugins/bearer/networkmanager.old/qnetworkmanagerengine.cpp 2015-01-25 05:48:33.000000000 +1000 +++ src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp 2015-01-25 20:28:27.926955505 +1000 @@ -83,7 +83,7 @@ ofonoRegistered(); if (QDBusConnection::systemBus().interface()->isServiceRegistered(NM_DBUS_SERVICE)) - nmRegistered(); + nmRegistered(QStringLiteral("none")); } QNetworkManagerEngine::~QNetworkManagerEngine() @@ -545,14 +545,17 @@ accessPointConfigurations.insert(ptr->id, ptr); locker.unlock(); emit configurationAdded(ptr); + Q_EMIT updateCompleted(); } bool QNetworkManagerEngine::isConnectionActive(const QString &settingsPath) { + QNetworkManagerSettingsConnection *settingsConnection = connectionFromId(settingsPath); QHashIterator i(activeConnectionsList); while (i.hasNext()) { i.next(); - if (i.value()->connection().path() == settingsPath) { + if (i.value()->connection().path() == settingsPath + && i.value()->uuid() == settingsConnection->getUuid()) { if (i.value()->state() == NM_ACTIVE_CONNECTION_STATE_ACTIVATING || i.value()->state() == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) { return true; @@ -562,7 +565,6 @@ } } - QNetworkManagerSettingsConnection *settingsConnection = connectionFromId(settingsPath); if (settingsConnection->getType() == DEVICE_TYPE_MODEM) { return isActiveContext(settingsConnection->connectionInterface()->path()); } @@ -619,8 +621,7 @@ foreach (const QDBusObjectPath &acPath, managerInterface->activeConnections()) { QNetworkManagerConnectionActive activeConnection(acPath.path()); - if (activeConnection.connection().path() == settingsPath && - activeConnection.state() == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) { + if (isConnectionActive(settingsPath)) { cpPriv->state |= QNetworkConfiguration::Active; break; } @@ -1066,7 +1067,7 @@ return path; } -void QNetworkManagerEngine::nmRegistered(const QString &) +void QNetworkManagerEngine::nmRegistered(const QString &service) { if (ofonoManager) { delete ofonoManager; @@ -1090,6 +1091,7 @@ systemSettings->setConnections(); nmAvailable = true; + if (service != QStringLiteral("none")) setupConfigurations(); } diff -ub src/plugins/bearer/networkmanager.old/qnetworkmanagerservice.cpp src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp --- src/plugins/bearer/networkmanager.old/qnetworkmanagerservice.cpp 2015-01-25 05:48:33.000000000 +1000 +++ src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp 2015-01-25 15:05:25.683528186 +1000 @@ -1327,6 +1327,13 @@ } } +QString QNetworkManagerConnectionActive::uuid() +{ + if (propertyMap.contains("Uuid")) + return propertyMap.value("Uuid").toString(); + return QString(); +} + class QNetworkManagerIp4ConfigPrivate { public: diff -ub src/plugins/bearer/networkmanager.old/qnetworkmanagerservice.h src/plugins/bearer/networkmanager/qnetworkmanagerservice.h --- src/plugins/bearer/networkmanager.old/qnetworkmanagerservice.h 2015-01-25 05:48:33.000000000 +1000 +++ src/plugins/bearer/networkmanager/qnetworkmanagerservice.h 2015-01-25 15:04:55.239529086 +1000 @@ -504,6 +504,7 @@ bool default6Route() const; bool setConnections(); bool isValid(); + QString uuid(); Q_SIGNALS: