From: Olivier Goffart Date: Mon, 5 Nov 2018 12:25:31 +0000 (+0100) Subject: Discovery: fix double emission of finished in case of error X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~468^2~434 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b79e57d1c180c77e0477e9c91d8b3ea7ea907ea3;p=nextcloud-desktop.git Discovery: fix double emission of finished in case of error --- 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);