1717#include " networkdetails.h"
1818#include " networkdevicebase.h"
1919#include " networkmanagerqt/manager.h"
20+ #include " private/vpnparameterschecker.h"
2021#include " wireddevice.h"
2122#include " wirelessdevice.h"
2223
@@ -961,8 +962,16 @@ void NetManagerThreadPrivate::doConnectOrInfo(const QString &id, NetType::NetIte
961962 case NetType::ConnectionItem: {
962963 NetworkManager::Connection::Ptr conn = findConnection (id);
963964 if (conn) {
965+ if (conn->settings ()->connectionType () == NetworkManager::ConnectionSettings::ConnectionType::Vpn) {
966+ QSharedPointer<VPNParametersChecker> checker (VPNParametersChecker::createVpnChecker (conn.data ()));
967+ if (!checker->isValid ()) {
968+ QVariantMap p = param;
969+ p.insert (" check" , true );
970+ doGetConnectInfo (id, type, p);
971+ return ;
972+ }
973+ }
964974 QString devicePath;
965- NetworkManager::isNetworkingEnabled ();
966975 for (NetworkManager::Device::Ptr device : NetworkManager::networkInterfaces ()) {
967976 NetworkManager::Connection::List connections = device->availableConnections ();
968977 NetworkManager::Connection::List::iterator itConnection = std::find_if (connections.begin (), connections.end (), [conn](NetworkManager::Connection::Ptr connection) {
@@ -1356,6 +1365,9 @@ void NetManagerThreadPrivate::doGetConnectInfo(const QString &id, NetType::NetIt
13561365 typeMap.insert (" optionalDevice" , optionalDevice);
13571366 retParam[deviceKey] = typeMap;
13581367 }
1368+ if (param.value (" check" ).toBool ()) {
1369+ retParam.insert (" check" , true );
1370+ }
13591371 Q_EMIT request (NetManager::ConnectInfo, id, retParam);
13601372 } break ;
13611373 case NetType::HotspotControlItem:
@@ -1534,8 +1546,8 @@ void NetManagerThreadPrivate::changeVpnId()
15341546 NetworkManager::Connection::Ptr uuidConn = findConnectionByUuid (m_newVPNuuid);
15351547 if (uuidConn) {
15361548 ConnectionSettings::Ptr connSettings = uuidConn->settings ();
1537- QString vpnName = connectionSuffixNum (connSettings->id () + " (%1)" );
1538- if (vpnName.isEmpty ()) {
1549+ QString vpnName = connectionSuffixNum (connSettings->id () + " (%1)" , connSettings-> id (), uuidConn. data () );
1550+ if (vpnName.isEmpty () || vpnName == connSettings-> id () ) {
15391551 m_newVPNuuid.clear ();
15401552 return ;
15411553 }
@@ -2804,7 +2816,7 @@ void NetManagerThreadPrivate::requestPassword(const QString &dev, const QString
28042816 Q_EMIT requestInputPassword (dev, id, param);
28052817}
28062818
2807- QString NetManagerThreadPrivate::connectionSuffixNum (const QString &matchConnName, const QString &name)
2819+ QString NetManagerThreadPrivate::connectionSuffixNum (const QString &matchConnName, const QString &name, NetworkManager::Connection *exception )
28082820{
28092821 if (matchConnName.isEmpty ()) {
28102822 return QString ();
@@ -2814,7 +2826,9 @@ QString NetManagerThreadPrivate::connectionSuffixNum(const QString &matchConnNam
28142826 QStringList connNameList;
28152827
28162828 for (const auto &conn : connList) {
2817- connNameList.append (conn->name ());
2829+ if (conn.data () != exception) {
2830+ connNameList.append (conn->name ());
2831+ }
28182832 }
28192833 if (!name.isEmpty () && !connNameList.contains (name)) {
28202834 return name;
0 commit comments