Skip to content

Commit fb52a7c

Browse files
committed
fix: DSL connection deletion signal processing error
DSL connection deletion signal processing error pms: BUG-308553
1 parent a243fce commit fb52a7c

3 files changed

Lines changed: 17 additions & 24 deletions

File tree

dcc-network/qml/PageAppProxy.qml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import org.deepin.dcc.network 1.0
1414
DccObject {
1515
id: root
1616
property var item: null
17-
property bool proxyEnable: item.isEnabled
18-
property var config: item.config
17+
property bool proxyEnable: item && item.isEnabled
18+
property var config: item ? item.config : {}
1919
property bool urlAlert: false
2020
property bool portAlert: false
2121

net-view/operation/private/netmanagerthreadprivate.cpp

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -538,8 +538,7 @@ void NetManagerThreadPrivate::doInit()
538538
connect(ConfigSetting::instance(), &ConfigSetting::enableAirplaneModeChanged, this, &NetManagerThreadPrivate::getAirplaneModeEnabled);
539539
QDBusConnection::systemBus().connect("org.deepin.dde.Bluetooth1", "/org/deepin/dde/Bluetooth1", "org.deepin.dde.Bluetooth1", "AdapterAdded", this, SLOT(getAirplaneModeEnabled()));
540540
QDBusConnection::systemBus().connect("org.deepin.dde.Bluetooth1", "/org/deepin/dde/Bluetooth1", "org.deepin.dde.Bluetooth1", "AdapterRemoved", this, SLOT(getAirplaneModeEnabled()));
541-
QDBusConnection::systemBus()
542-
.connect("org.deepin.dde.AirplaneMode1", "/org/deepin/dde/AirplaneMode1", "org.freedesktop.DBus.Properties", "PropertiesChanged", this, SLOT(onAirplaneModeEnabledPropertiesChanged(QString, QVariantMap, QStringList)));
541+
QDBusConnection::systemBus().connect("org.deepin.dde.AirplaneMode1", "/org/deepin/dde/AirplaneMode1", "org.freedesktop.DBus.Properties", "PropertiesChanged", this, SLOT(onAirplaneModeEnabledPropertiesChanged(QString, QVariantMap, QStringList)));
543542
}
544543
// DSL
545544
if (m_flags.testFlags(NetType::NetManagerFlag::Net_DSL)) {
@@ -1071,13 +1070,13 @@ void NetManagerThreadPrivate::doGetConnectInfo(const QString &id, NetType::NetIt
10711070
if (!dbusSettingsMap.isError() && dbusSettingsMap.value().contains("ipv6")) {
10721071
QVariantMap ipv6Data = dbusSettingsMap.value().value("ipv6");
10731072
QVariantMap ipv6Map = retParam["ipv6"].value<QVariantMap>();
1074-
1073+
10751074
// 处理IPv6 gateway
10761075
if (ipv6->method() == Ipv6Setting::Manual && ipv6Data.contains("gateway")) {
10771076
QString gateway = ipv6Data.value("gateway").toString();
10781077
ipv6Map.insert("gateway", gateway);
10791078
}
1080-
1079+
10811080
// 处理IPv6 DNS - 首先从NetworkManager设置中直接读取
10821081
const QList<QHostAddress> &ipv6DnsFromSettings = ipv6->dns();
10831082
if (!ipv6DnsFromSettings.isEmpty()) {
@@ -1099,7 +1098,7 @@ void NetManagerThreadPrivate::doGetConnectInfo(const QString &id, NetType::NetIt
10991098
ipv6Map.insert("dns", ipv6DnsList);
11001099
}
11011100
}
1102-
1101+
11031102
retParam["ipv6"] = ipv6Map;
11041103
}
11051104

@@ -1182,13 +1181,13 @@ void NetManagerThreadPrivate::doGetConnectInfo(const QString &id, NetType::NetIt
11821181
if (!dbusSettingsReply.isError() && dbusSettingsReply.value().contains("ipv6")) {
11831182
QVariantMap ipv6Data = dbusSettingsReply.value().value("ipv6");
11841183
QVariantMap ipv6Map = retParam["ipv6"].value<QVariantMap>();
1185-
1184+
11861185
// 处理IPv6 gateway
11871186
if (ipv6->method() == Ipv6Setting::Manual && ipv6Data.contains("gateway")) {
11881187
QString gateway = ipv6Data.value("gateway").toString();
11891188
ipv6Map.insert("gateway", gateway);
11901189
}
1191-
1190+
11921191
// 处理IPv6 DNS - 首先从NetworkManager设置中直接读取
11931192
const QList<QHostAddress> &ipv6DnsFromSettings = ipv6->dns();
11941193
if (!ipv6DnsFromSettings.isEmpty()) {
@@ -1210,7 +1209,7 @@ void NetManagerThreadPrivate::doGetConnectInfo(const QString &id, NetType::NetIt
12101209
ipv6Map.insert("dns", ipv6DnsList);
12111210
}
12121211
}
1213-
1212+
12141213
retParam["ipv6"] = ipv6Map;
12151214
}
12161215

@@ -1487,7 +1486,7 @@ void NetManagerThreadPrivate::doSetConnectInfo(const QString &id, NetType::NetIt
14871486
pSetting->setParent(map["pppoe"]["parent"].toString());
14881487
pSetting->setInitialized(true);
14891488
}
1490-
1489+
14911490
// 手动处理IPv6 DNS设置 - 确保正确初始化
14921491
if (map.contains("ipv6")) {
14931492
QVariant ipv6Variant = map["ipv6"];
@@ -1499,7 +1498,7 @@ void NetManagerThreadPrivate::doSetConnectInfo(const QString &id, NetType::NetIt
14991498
QStringList ipv6DnsStrings = dnsVariant.toStringList();
15001499
if (!ipv6DnsStrings.isEmpty()) {
15011500
NetworkManager::Ipv6Setting::Ptr ipv6Setting = settings->setting(Setting::SettingType::Ipv6).staticCast<NetworkManager::Ipv6Setting>();
1502-
1501+
15031502
// 转换字符串列表为QHostAddress列表
15041503
QList<QHostAddress> ipv6DnsAddresses;
15051504
for (const QString &dnsStr : ipv6DnsStrings) {
@@ -1508,11 +1507,11 @@ void NetManagerThreadPrivate::doSetConnectInfo(const QString &id, NetType::NetIt
15081507
ipv6DnsAddresses.append(addr);
15091508
}
15101509
}
1511-
1510+
15121511
if (!ipv6DnsAddresses.isEmpty()) {
15131512
ipv6Setting->setDns(ipv6DnsAddresses);
15141513
ipv6Setting->setIgnoreAutoDns(true);
1515-
ipv6Setting->setInitialized(true); // 关键!确保设置被初始化
1514+
ipv6Setting->setInitialized(true); // 关键!确保设置被初始化
15161515
}
15171516
}
15181517
}
@@ -2374,11 +2373,7 @@ void NetManagerThreadPrivate::onDSLAdded(const QList<DSLItem *> &dsls)
23742373
void NetManagerThreadPrivate::onDSLRemoved(const QList<DSLItem *> &dsls)
23752374
{
23762375
for (auto &&item : dsls) {
2377-
NetConnectionItemPrivate *connItem = NetItemNew(ConnectionItem, item->connection()->path());
2378-
connItem->updatename(item->connection()->id());
2379-
connItem->updatestatus(toNetConnectionStatus(item->status()));
2380-
connItem->item()->moveToThread(m_parentThread);
2381-
Q_EMIT itemAdded("NetDSLControlItem", connItem);
2376+
Q_EMIT itemRemoved(item->connection()->path());
23822377
}
23832378
}
23842379

src/impl/networkmanager/dslcontrollernm.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,7 @@ void DSLController_NM::connectionAppeared(const NetworkManager::WiredDevice::Ptr
129129
});
130130

131131
if (itConnection != connections.end()) {
132-
DSLItem *dslItem = addPppoeConnection(wiredDevice, *itConnection);
133-
if (dslItem)
134-
Q_EMIT itemAdded({dslItem});
132+
addPppoeConnection(wiredDevice, *itConnection);
135133
}
136134
}
137135

@@ -175,7 +173,6 @@ DSLItem *DSLController_NM::addPppoeConnection(NetworkManager::WiredDevice::Ptr d
175173
DSLItem *item = new DSLItem();
176174
item->setConnection(itemJson(connection));
177175
item->updateTimeStamp(connection->settings()->timestamp());
178-
m_dslItems << item;
179176

180177
// 当连接的名称发送变化的时候,需要更新界面的显示
181178
connect(connection.data(), &NetworkManager::Connection::updated, item, [ this, item, itemJson, connection ] {
@@ -184,11 +181,12 @@ DSLItem *DSLController_NM::addPppoeConnection(NetworkManager::WiredDevice::Ptr d
184181
Q_EMIT itemChanged({ item });
185182
});
186183

184+
m_dslItems << item;
187185
// 按照ID进行排序
188186
std::sort(m_dslItems.begin(), m_dslItems.end(), [](DSLItem *item1, DSLItem *item2) {
189187
return item1->connection()->id() < item2->connection()->id();
190188
});
191-
189+
Q_EMIT itemAdded({item});
192190
return item;
193191
}
194192

0 commit comments

Comments
 (0)