Skip to content

Commit 12b0d13

Browse files
committed
fix: Modify network service crash issue
Smart pointer causes multiple releases pms: BUG-308701
1 parent a2e5b06 commit 12b0d13

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

network-service-plugin/accountnetwork/session/accountnetwork/activeaccoutnetwork.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,11 @@ void ActiveAccountNetwork::onActiveConnectionChanged()
345345

346346
void ActiveAccountNetwork::onStateChanged(NetworkManager::ActiveConnection::State state)
347347
{
348-
NetworkManager::ActiveConnection::Ptr activeConnection(qobject_cast<NetworkManager::ActiveConnection *>(sender()));
348+
NetworkManager::ActiveConnection *activeConn = qobject_cast<NetworkManager::ActiveConnection *>(sender());
349+
if (!activeConn) {
350+
return;
351+
}
352+
const NetworkManager::ActiveConnection::Ptr activeConnection = NetworkManager::findActiveConnection(activeConn->path());
349353
if (!activeConnection) {
350354
return;
351355
}

network-service-plugin/system/networkinitialization.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,6 @@ void NetworkInitialization::addFirstConnection(const QSharedPointer<NetworkManag
203203
// macAddress.remove(":");
204204
// wiredSetting->setMacAddress(QByteArray::fromHex(macAddress.toUtf8()));
205205
// wiredSetting->setInitialized(true);
206-
qWarning()<<__LINE__<<__FUNCTION__<<conn->toMap();
207206
QDBusPendingReply<QDBusObjectPath> reply = NetworkManager::addConnection(conn->toMap());
208207
reply.waitForFinished();
209208
qCDebug(DSM) << "device" << device->interfaceName() << "create connection success,count:" << device->availableConnections().size();
@@ -468,7 +467,15 @@ void NetworkInitialization::onInitDeviceConnection()
468467

469468
void NetworkInitialization::onAddFirstConnection()
470469
{
471-
QSharedPointer<NetworkManager::WiredDevice> device(qobject_cast<NetworkManager::WiredDevice *>(sender()));
470+
NetworkManager::WiredDevice *dev = qobject_cast<NetworkManager::WiredDevice *>(sender());
471+
if (!dev) {
472+
return;
473+
}
474+
NetworkManager::Device::Ptr devPtr = NetworkManager::findNetworkInterface(dev->uni());
475+
if (!devPtr) {
476+
return;
477+
}
478+
NetworkManager::WiredDevice::Ptr device = devPtr.staticCast<NetworkManager::WiredDevice>();
472479
qCDebug(DSM) << "device" << device->interfaceName() << " carrier:" << device->carrier() << " managed:" << device->managed() << " interfaceFlags:" << device->interfaceFlags();
473480
addFirstConnection(device);
474481
}

0 commit comments

Comments
 (0)