From b79e57d1c180c77e0477e9c91d8b3ea7ea907ea3 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 5 Nov 2018 13:25:31 +0100 Subject: [PATCH] Discovery: fix double emission of finished in case of error --- src/libsync/discovery.cpp | 5 ----- src/libsync/syncengine.cpp | 8 ++++++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index e6aab5b09..f42482338 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1149,8 +1149,6 @@ int ProcessDirectoryJob::processSubJobs(int nbJobs) void ProcessDirectoryJob::dbError() { _discoveryData->fatalError(tr("Error while reading the database")); - _pendingAsyncJobs = -1; // We're finished, we don't want to emit finished again - emit finished(); } void ProcessDirectoryJob::addVirtualFileSuffix(QString &str) const @@ -1214,7 +1212,6 @@ DiscoverySingleDirectoryJob *ProcessDirectoryJob::startAsyncServerQuery() } emit _discoveryData->fatalError(tr("Server replied with an error while reading directory '%1' : %2") .arg(_currentFolder._server, results.errorMessage())); - emit finished(); } }); connect(serverJob, &DiscoverySingleDirectoryJob::firstDirectoryPermissions, this, @@ -1248,7 +1245,6 @@ bool ProcessDirectoryJob::runLocalQuery() return true; } emit _discoveryData->fatalError(errorString); - emit finished(); return false; } errno = 0; @@ -1283,7 +1279,6 @@ bool ProcessDirectoryJob::runLocalQuery() // Note: Windows vio converts any error into EACCES qCWarning(lcDisco) << "readdir failed for file in " << _currentFolder._local << " - errno: " << errno; emit _discoveryData->fatalError(tr("Error while reading directory %1").arg(_discoveryData->_localDir + _currentFolder._local)); - emit finished(); return false; } return true; diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 8bd3a68db..c77a4dfd3 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -642,6 +642,11 @@ void SyncEngine::slotNewItem(const SyncFileItemPtr &item) void SyncEngine::slotDiscoveryJobFinished() { + if (!_discoveryPhase) { + // There was an error that was already taken care of + return; + } + qCInfo(lcEngine) << "#### Discovery end #################################################### " << _stopWatch.addLapTime(QLatin1String("Discovery Finished")) << "ms"; // Sanity check @@ -817,6 +822,9 @@ void SyncEngine::finalize(bool success) qCInfo(lcEngine) << "Sync run took " << _stopWatch.addLapTime(QLatin1String("Sync Finished")) << "ms"; _stopWatch.stop(); + if (_discoveryPhase) { + _discoveryPhase.take()->deleteLater(); + } s_anySyncRunning = false; _syncRunning = false; emit finished(success); -- 2.30.2