From b67ac4f7bad9abc30b99f60e87a1f1725057163b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 20 Oct 2015 18:59:01 +0200 Subject: Avoid trying to open ResourceAccess twice --- common/resourceaccess.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'common') diff --git a/common/resourceaccess.cpp b/common/resourceaccess.cpp index fba7a8b..bd9e2c9 100644 --- a/common/resourceaccess.cpp +++ b/common/resourceaccess.cpp @@ -89,12 +89,14 @@ public: QMultiMap > resultHandler; QSet completeCommands; uint messageId; + bool openingSocket; }; ResourceAccess::Private::Private(const QByteArray &name, const QByteArray &instanceIdentifier, ResourceAccess *q) : resourceName(name), resourceInstanceIdentifier(instanceIdentifier), - messageId(0) + messageId(0), + openingSocket(false) { } @@ -341,8 +343,13 @@ void ResourceAccess::open() log("Socket valid, so not opening again"); return; } + if (d->openingSocket) { + return; + } + d->openingSocket = true; d->initializeSocket().then([this]() { Trace() << "Socket is initialized"; + d->openingSocket = false; QObject::connect(d->socket.data(), &QLocalSocket::disconnected, this, &ResourceAccess::disconnected); QObject::connect(d->socket.data(), SIGNAL(error(QLocalSocket::LocalSocketError)), @@ -351,7 +358,8 @@ void ResourceAccess::open() this, &ResourceAccess::readResourceMessage); connected(); }, - [](int error, const QString &errorString) { + [this](int error, const QString &errorString) { + d->openingSocket = false; Warning() << "Failed to initialize socket " << errorString; }).exec(); } -- cgit v1.2.3