[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