From 943c5069d4822802d3c210fcabe80a5364c438ef Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 2 Oct 2015 17:08:39 +0200 Subject: [PATCH] Lock files when rolling back version --- apps/files_versions/lib/storage.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php index bdf1811c5f..cd2077d292 100644 --- a/apps/files_versions/lib/storage.php +++ b/apps/files_versions/lib/storage.php @@ -42,6 +42,7 @@ namespace OCA\Files_Versions; use OCA\Files_Versions\AppInfo\Application; use OCA\Files_Versions\Command\Expire; +use OCP\Lock\ILockingProvider; class Storage { @@ -337,11 +338,19 @@ class Storage { * @return bool true for success, false otherwise */ private static function copyFileContents($view, $path1, $path2) { + /** @var \OC\Files\Storage\Storage $storage1 */ list($storage1, $internalPath1) = $view->resolvePath($path1); + /** @var \OC\Files\Storage\Storage $storage2 */ list($storage2, $internalPath2) = $view->resolvePath($path2); + $view->lockFile($path1, ILockingProvider::LOCK_EXCLUSIVE); + $view->lockFile($path2, ILockingProvider::LOCK_EXCLUSIVE); + $result = $storage2->moveFromStorage($storage1, $internalPath1, $internalPath2); + $view->unlockFile($path1, ILockingProvider::LOCK_EXCLUSIVE); + $view->unlockFile($path2, ILockingProvider::LOCK_EXCLUSIVE); + return ($result !== false); }