diff options
Diffstat (limited to 'synchronizer/listener.cpp')
-rw-r--r-- | synchronizer/listener.cpp | 9 |
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 | ||
37 | Listener::Listener(const QByteArray &resourceName, QObject *parent) | 38 | Listener::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); |