[SCM] kdeconnect packaging branch, master, updated. debian/0.9g-1-1183-g9d69498

Maximiliano Curia maxy at moszumanska.debian.org
Fri Oct 14 14:29:43 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/kdeconnect.git;a=commitdiff;h=7a0bb09

The following commit has been merged in the master branch:
commit 7a0bb0935370d83737933c181ea36d15383d0482
Author: Albert Vaca <albertvaka at gmail.com>
Date:   Thu Jun 2 12:18:51 2016 +0200

    Make sure we don't broadcast more than once at the same time.
    
    Race conditions might happen because two links will be created.
---
 core/backends/lan/lanlinkprovider.cpp | 18 +++++++++++++++++-
 core/backends/lan/lanlinkprovider.h   |  2 ++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/core/backends/lan/lanlinkprovider.cpp b/core/backends/lan/lanlinkprovider.cpp
index 3281636..38afcca 100644
--- a/core/backends/lan/lanlinkprovider.cpp
+++ b/core/backends/lan/lanlinkprovider.cpp
@@ -48,6 +48,10 @@ LanLinkProvider::LanLinkProvider(bool testMode)
 {
     mTcpPort = 0;
 
+    combineBroadcastsTimer.setInterval(0); // increase this if waiting a single event-loop iteration is not enough
+    combineBroadcastsTimer.setSingleShot(true);
+    connect(&combineBroadcastsTimer, SIGNAL(timeout()), this, SLOT(broadcastToNetwork()));
+
     connect(&mUdpSocket, SIGNAL(readyRead()), this, SLOT(newUdpConnection()));
 
     mServer = new Server(this);
@@ -56,6 +60,7 @@ LanLinkProvider::LanLinkProvider(bool testMode)
     //Detect when a network interface changes status, so we announce ourelves in the new network
     QNetworkConfigurationManager* networkManager = new QNetworkConfigurationManager(this);
     connect(networkManager, &QNetworkConfigurationManager::configurationChanged, this, &LanLinkProvider::onNetworkConfigurationChanged);
+
 }
 
 void LanLinkProvider::onNetworkConfigurationChanged(const QNetworkConfiguration &config)
@@ -99,9 +104,20 @@ void LanLinkProvider::onStop()
     mServer->close();
 }
 
-//I'm in a new network, let's be polite and introduce myself
 void LanLinkProvider::onNetworkChange()
 {
+    if (combineBroadcastsTimer.isActive()) {
+        qCDebug(KDECONNECT_CORE()) << "Preventing duplicate broadcasts";
+        return;
+    }
+    combineBroadcastsTimer.start();
+}
+
+//I'm in a new network, let's be polite and introduce myself
+void LanLinkProvider::broadcastToNetwork()
+{
+
+
     if (!mServer->isListening()) {
         //Not started
         return;
diff --git a/core/backends/lan/lanlinkprovider.h b/core/backends/lan/lanlinkprovider.h
index 858fb1a..4105c3c 100644
--- a/core/backends/lan/lanlinkprovider.h
+++ b/core/backends/lan/lanlinkprovider.h
@@ -63,6 +63,7 @@ private Q_SLOTS:
     void deviceLinkDestroyed(QObject* destroyedDeviceLink);
     void sslErrors(const QList<QSslError>& errors);
     void sslErrorsLogButIgnore(const QList<QSslError>& errors);
+    void broadcastToNetwork();
 
 private:
     static void configureSocket(QSslSocket* socket);
@@ -86,6 +87,7 @@ private:
     QMap<QSslSocket*, PendingConnect> receivedIdentityPackages;
     QNetworkConfiguration m_lastConfig;
     const bool mTestMode;
+    QTimer combineBroadcastsTimer;
 };
 
 #endif

-- 
kdeconnect packaging



More information about the pkg-kde-commits mailing list