aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-10-02 18:40:34 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2015-10-02 18:40:34 +0200
commit60c776070eedb7380fef89fd66493d651b41f3cd (patch)
treee6d4de5ad7b5c21edd3ef61138e141ce65a9feae
parentff89824135298aa072c56f5a811f453df7ac3fe4 (diff)
parent943c5069d4822802d3c210fcabe80a5364c438ef (diff)
downloadnextcloud-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.php9
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);
}