diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-10-02 18:40:34 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-10-02 18:40:34 +0200 |
commit | 60c776070eedb7380fef89fd66493d651b41f3cd (patch) | |
tree | e6d4de5ad7b5c21edd3ef61138e141ce65a9feae | |
parent | ff89824135298aa072c56f5a811f453df7ac3fe4 (diff) | |
parent | 943c5069d4822802d3c210fcabe80a5364c438ef (diff) | |
download | nextcloud-server-60c776070eedb7380fef89fd66493d651b41f3cd.tar.gz nextcloud-server-60c776070eedb7380fef89fd66493d651b41f3cd.zip |
Merge pull request #19538 from owncloud/versions-lock
Lock files when rolling back version
-rw-r--r-- | apps/files_versions/lib/storage.php | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php index bdf1811c5f9..cd2077d2922 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); } |