summaryrefslogtreecommitdiffstats
path: root/synchronizer/listener.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'synchronizer/listener.cpp')
-rw-r--r--synchronizer/listener.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/synchronizer/listener.cpp b/synchronizer/listener.cpp
index e930a02..e9e6188 100644
--- a/synchronizer/listener.cpp
+++ b/synchronizer/listener.cpp
@@ -33,6 +33,7 @@
33 33
34#include <QLocalSocket> 34#include <QLocalSocket>
35#include <QTimer> 35#include <QTimer>
36#include <QLockFile>
36 37
37Listener::Listener(const QByteArray &resourceName, QObject *parent) 38Listener::Listener(const QByteArray &resourceName, QObject *parent)
38 : QObject(parent), 39 : QObject(parent),
@@ -48,6 +49,14 @@ Listener::Listener(const QByteArray &resourceName, QObject *parent)
48 connect(m_server, &QLocalServer::newConnection, 49 connect(m_server, &QLocalServer::newConnection,
49 this, &Listener::acceptConnection); 50 this, &Listener::acceptConnection);
50 Trace() << "Trying to open " << m_resourceName; 51 Trace() << "Trying to open " << m_resourceName;
52
53 m_lockfile = new QLockFile(resourceName + ".lock");
54 m_lockfile->setStaleLockTime(0);
55 if (!m_lockfile->tryLock(0)) {
56 Warning() << "Failed to acquire exclusive lock on socket.";
57 exit(-1);
58 }
59
51 if (!m_server->listen(QString::fromLatin1(resourceName))) { 60 if (!m_server->listen(QString::fromLatin1(resourceName))) {
52 // FIXME: multiple starts need to be handled here 61 // FIXME: multiple starts need to be handled here
53 m_server->removeServer(resourceName); 62 m_server->removeServer(resourceName);