From: Jocelyn Turcotte Date: Thu, 24 Aug 2017 14:48:40 +0000 (+0200) Subject: Remove SyncEngine::_remotePerms X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~701^2~88 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=82dd1775eb9ccf02d5499a6fb2f084391b1a1c21;p=nextcloud-desktop.git Remove SyncEngine::_remotePerms Now that csync is using a more convenient data structure for its file trees, wait a little bit longer before destroying them and fetch the remote permissions from the remote tree there instead. --- diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index ebb745f70..a2475a243 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -412,8 +412,6 @@ int SyncEngine::treewalkFile(csync_file_stat_t *file, csync_file_stat_t *other, } if (!file->remotePerm.isEmpty()) { item->_remotePerm = file->remotePerm; - if (remote) - _remotePerms[item->_file] = item->_remotePerm; } /* The flag "serverHasIgnoredFiles" is true if item in question is a directory @@ -933,8 +931,6 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult) _hasForwardInTimeFiles = false; _backInTimeFiles = 0; bool walkOk = true; - _remotePerms.clear(); - _remotePerms.reserve(_csync_ctx->remote.files.size()); _seenFiles.clear(); _temporarilyUnavailablePaths.clear(); _renamedFolders.clear(); @@ -947,13 +943,7 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult) qCWarning(lcEngine) << "Error in remote treewalk."; } - if (!_csync_ctx->remote.root_perms.isEmpty()) { - _remotePerms[QLatin1String("")] = _csync_ctx->remote.root_perms; - qCInfo(lcEngine) << "Permissions of the root folder: " << _remotePerms[QLatin1String("")]; - } - - // Re-init the csync context to free memory - _csync_ctx->reinitialize(); + qCInfo(lcEngine) << "Permissions of the root folder: " << _csync_ctx->remote.root_perms; // The map was used for merging trees, convert it to a list: SyncFileItemVector syncItems = _syncItemMap.values().toVector(); @@ -1016,6 +1006,9 @@ void SyncEngine::slotDiscoveryJobFinished(int discoveryResult) // make sure everything is allowed checkForPermission(syncItems); + // Re-init the csync context to free memory + _csync_ctx->reinitialize(); + // To announce the beginning of the sync emit aboutToPropagate(syncItems); @@ -1150,7 +1143,6 @@ void SyncEngine::finalize(bool success) // Delete the propagator only after emitting the signal. _propagator.clear(); - _remotePerms.clear(); _seenFiles.clear(); _temporarilyUnavailablePaths.clear(); _renamedFolders.clear(); @@ -1460,7 +1452,18 @@ QByteArray SyncEngine::getPermissions(const QString &file) const return rx.cap(1).toLatin1(); } } - return _remotePerms.value(file); + + // Fetch from the csync context while we still have it. + ASSERT(_csync_ctx->status != CSYNC_STATUS_INIT); + + if (file == QLatin1String("")) + return _csync_ctx->remote.root_perms; + + auto it = _csync_ctx->remote.files.find(file.toUtf8()); + if (it != _csync_ctx->remote.files.end()) { + return it->second->remotePerm; + } + return QByteArray(); } void SyncEngine::restoreOldFiles(SyncFileItemVector &syncItems) diff --git a/src/libsync/syncengine.h b/src/libsync/syncengine.h index 30de1f631..3bc6da984 100644 --- a/src/libsync/syncengine.h +++ b/src/libsync/syncengine.h @@ -259,9 +259,6 @@ private: int _downloadLimit; SyncOptions _syncOptions; - // hash containing the permissions on the remote directory - QHash _remotePerms; - /// Hook for computing checksums from csync_update CSyncChecksumHook _checksum_hook;