diff options
-rw-r--r-- | common/resourceaccess.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
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: | |||
89 | QMultiMap<uint, std::function<void(int error, const QString &errorMessage)> > resultHandler; | 89 | QMultiMap<uint, std::function<void(int error, const QString &errorMessage)> > resultHandler; |
90 | QSet<uint> completeCommands; | 90 | QSet<uint> completeCommands; |
91 | uint messageId; | 91 | uint messageId; |
92 | bool openingSocket; | ||
92 | }; | 93 | }; |
93 | 94 | ||
94 | ResourceAccess::Private::Private(const QByteArray &name, const QByteArray &instanceIdentifier, ResourceAccess *q) | 95 | ResourceAccess::Private::Private(const QByteArray &name, const QByteArray &instanceIdentifier, ResourceAccess *q) |
95 | : resourceName(name), | 96 | : resourceName(name), |
96 | resourceInstanceIdentifier(instanceIdentifier), | 97 | resourceInstanceIdentifier(instanceIdentifier), |
97 | messageId(0) | 98 | messageId(0), |
99 | openingSocket(false) | ||
98 | { | 100 | { |
99 | } | 101 | } |
100 | 102 | ||
@@ -341,8 +343,13 @@ void ResourceAccess::open() | |||
341 | log("Socket valid, so not opening again"); | 343 | log("Socket valid, so not opening again"); |
342 | return; | 344 | return; |
343 | } | 345 | } |
346 | if (d->openingSocket) { | ||
347 | return; | ||
348 | } | ||
349 | d->openingSocket = true; | ||
344 | d->initializeSocket().then<void>([this]() { | 350 | d->initializeSocket().then<void>([this]() { |
345 | Trace() << "Socket is initialized"; | 351 | Trace() << "Socket is initialized"; |
352 | d->openingSocket = false; | ||
346 | QObject::connect(d->socket.data(), &QLocalSocket::disconnected, | 353 | QObject::connect(d->socket.data(), &QLocalSocket::disconnected, |
347 | this, &ResourceAccess::disconnected); | 354 | this, &ResourceAccess::disconnected); |
348 | QObject::connect(d->socket.data(), SIGNAL(error(QLocalSocket::LocalSocketError)), | 355 | QObject::connect(d->socket.data(), SIGNAL(error(QLocalSocket::LocalSocketError)), |
@@ -351,7 +358,8 @@ void ResourceAccess::open() | |||
351 | this, &ResourceAccess::readResourceMessage); | 358 | this, &ResourceAccess::readResourceMessage); |
352 | connected(); | 359 | connected(); |
353 | }, | 360 | }, |
354 | [](int error, const QString &errorString) { | 361 | [this](int error, const QString &errorString) { |
362 | d->openingSocket = false; | ||
355 | Warning() << "Failed to initialize socket " << errorString; | 363 | Warning() << "Failed to initialize socket " << errorString; |
356 | }).exec(); | 364 | }).exec(); |
357 | } | 365 | } |