From 16d7051cf1aca4b13ed2315825e7d25051322054 Mon Sep 17 00:00:00 2001 From: renpeijia Date: Thu, 28 Oct 2021 13:45:40 +0800 Subject: [PATCH] fix:it can not disconnect connection sometime. bug link:http://172.17.66.192/biz/bug-view-87465.html --- .../dbus-interface/kywirelessnetitem.cpp | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/backend/dbus-interface/kywirelessnetitem.cpp b/src/backend/dbus-interface/kywirelessnetitem.cpp index db3ed6fc..85bc84f0 100644 --- a/src/backend/dbus-interface/kywirelessnetitem.cpp +++ b/src/backend/dbus-interface/kywirelessnetitem.cpp @@ -66,23 +66,29 @@ void KyWirelessNetItem::init(NetworkManager::WirelessNetwork::Ptr net) void KyWirelessNetItem::initInfoBySsid() { - for (auto const & conn : m_networkResourceInstance->m_connections) - { + for (auto const & conn : m_networkResourceInstance->m_connections) { NetworkManager::ConnectionSettings::Ptr settings = conn->settings(); - if (settings->connectionType() != NetworkManager::ConnectionSettings::Wireless) - { + if (settings->connectionType() != NetworkManager::ConnectionSettings::Wireless) { continue; } + NetworkManager::WirelessSetting::Ptr wifi_sett = settings->setting(NetworkManager::Setting::Wireless).dynamicCast(); QString devName = m_networkResourceInstance->findDeviceUni(m_device)->interfaceName(); - if (wifi_sett->ssid() == m_NetSsid && (settings->interfaceName().compare(devName) == 0 || settings->interfaceName().isEmpty())) - { + if (wifi_sett->ssid() == m_NetSsid + && (settings->interfaceName().compare(devName) == 0 || settings->interfaceName().isEmpty())) { m_connectUuid = settings->uuid(); m_connName = conn->name(); m_connDbusPath = conn->path(); m_isConfigured = true; - return; + /* + * 如果有激活的链接,则取激活的链接,没有则取最后一个,因为一个热点可以创建多个链接 + */ + if (nullptr != m_networkResourceInstance->getActiveConnect(m_connectUuid)) { + break; + } } } + + return; }