Группа :: Коммуникации
Пакет: kde5-connect
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: ae58b9dec49c809b85b5404cee17946116f8a706.diff
Скачать
Скачать
diff --git a/core/backends/lan/lanlinkprovider.cpp b/core/backends/lan/lanlinkprovider.cpp
index a4942c653d82a3212230226b79dc8921359a5c54..770e7866addc84080be8f2b638bcbb9b6a29b9d0 100644
--- a/core/backends/lan/lanlinkprovider.cpp
+++ b/core/backends/lan/lanlinkprovider.cpp
@@ -46,6 +46,8 @@
#define MIN_VERSION_WITH_SSL_SUPPORT 6
+static const int MAX_UNPAIRED_CONNECTIONS = 42;
+
LanLinkProvider::LanLinkProvider(
bool testMode,
quint16 udpBroadcastPort,
@@ -555,6 +557,15 @@ void LanLinkProvider::addLink(const QString& deviceId, QSslSocket* socket, Netwo
deviceLink->reset(socket, connectionOrigin);
} else {
deviceLink = new LanDeviceLink(deviceId, this, socket, connectionOrigin);
+ // Socket disconnection will now be handled by LanDeviceLink
+ disconnect(socket, &QAbstractSocket::disconnected, socket, &QObject::deleteLater);
+ bool isDeviceTrusted = KdeConnectConfig::instance().trustedDevices().contains(deviceId);
+ if (!isDeviceTrusted && m_links.size() > MAX_UNPAIRED_CONNECTIONS) {
+ qCWarning(KDECONNECT_CORE) << "Too many unpaired devices to remember them all. Ignoring " << deviceId;
+ socket->disconnectFromHost();
+ socket->deleteLater();
+ return;
+ }
connect(deviceLink, &QObject::destroyed, this, &LanLinkProvider::deviceLinkDestroyed);
m_links[deviceId] = deviceLink;
if (m_pairingHandlers.contains(deviceId)) {