diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp index 7d1994ebec..ef044b3b0c 100644 --- a/src/libsync/discoveryphase.cpp +++ b/src/libsync/discoveryphase.cpp @@ -186,6 +186,18 @@ void DiscoveryPhase::startJob(ProcessDirectoryJob *job) job->start(); } +void DiscoveryPhase::setSelectiveSyncBlackList(const QStringList &list) +{ + _selectiveSyncBlackList = list; + std::sort(_selectiveSyncBlackList.begin(), _selectiveSyncBlackList.end()); +} + +void DiscoveryPhase::setSelectiveSyncWhiteList(const QStringList &list) +{ + _selectiveSyncWhiteList = list; + std::sort(_selectiveSyncWhiteList.begin(), _selectiveSyncWhiteList.end()); +} + void DiscoveryPhase::scheduleMoreJobs() { auto limit = qMax(1, _syncOptions._parallelNetworkJobs); diff --git a/src/libsync/discoveryphase.h b/src/libsync/discoveryphase.h index 3cd1cb26e2..aa457b65d2 100644 --- a/src/libsync/discoveryphase.h +++ b/src/libsync/discoveryphase.h @@ -136,6 +136,10 @@ class DiscoveryPhase : public QObject QMap _renamedItems; // map source -> destinations int _currentlyActiveJobs = 0; + // both must contain a sorted list + QStringList _selectiveSyncBlackList; + QStringList _selectiveSyncWhiteList; + void scheduleMoreJobs(); bool isInSelectiveSyncBlackList(const QString &path) const; @@ -167,8 +171,6 @@ public: SyncJournalDb *_statedb; AccountPtr _account; SyncOptions _syncOptions; - QStringList _selectiveSyncBlackList; - QStringList _selectiveSyncWhiteList; ExcludedFiles *_excludes; QRegExp _invalidFilenameRx; // FIXME: maybe move in ExcludedFiles QStringList _serverBlacklistedFiles; // The blacklist from the capabilities @@ -177,6 +179,9 @@ public: void startJob(ProcessDirectoryJob *); + void setSelectiveSyncBlackList(const QStringList &list); + void setSelectiveSyncWhiteList(const QStringList &list); + // output QByteArray _dataFingerprint; diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 53fc732c52..10cdacc8a4 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -517,8 +517,8 @@ void SyncEngine::startSync() _discoveryPhase->_remoteFolder+='/'; _discoveryPhase->_syncOptions = _syncOptions; _discoveryPhase->_shouldDiscoverLocaly = [this](const QString &s) { return shouldDiscoverLocally(s); }; - _discoveryPhase->_selectiveSyncBlackList = selectiveSyncBlackList; - _discoveryPhase->_selectiveSyncWhiteList = _journal->getSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, &ok); + _discoveryPhase->setSelectiveSyncBlackList(selectiveSyncBlackList); + _discoveryPhase->setSelectiveSyncWhiteList(_journal->getSelectiveSyncList(SyncJournalDb::SelectiveSyncWhiteList, &ok)); if (!ok) { qCWarning(lcEngine) << "Unable to read selective sync list, aborting."; syncError(tr("Unable to read from the sync journal."));