summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-05-13 12:12:39 +0200
committerRobin Appelman <icewind@owncloud.com>2015-06-01 13:22:56 +0200
commit8d53dc803f978f0b2e5db1c3503dc5fb0d55b0c5 (patch)
tree7f16f4b848f00ad32f37b6faf7218fbfbb3dee5b /lib/private
parent0775e9c1ca95a3f93b1069610fd89a0801f9f897 (diff)
downloadnextcloud-server-8d53dc803f978f0b2e5db1c3503dc5fb0d55b0c5.tar.gz
nextcloud-server-8d53dc803f978f0b2e5db1c3503dc5fb0d55b0c5.zip
Use md5 + prefix for file locking keys in memcache
Also trim slashes from paths to make sure the locks are based on the same paths.
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/files/storage/common.php4
-rw-r--r--lib/private/files/view.php4
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php
index 1c54f7cbc14..f0c9e1bfa05 100644
--- a/lib/private/files/storage/common.php
+++ b/lib/private/files/storage/common.php
@@ -630,7 +630,7 @@ abstract class Common implements Storage {
* @throws \OCP\Lock\LockedException
*/
public function acquireLock($path, $type, ILockingProvider $provider) {
- $provider->acquireLock(md5($this->getId() . '::' . $path), $type);
+ $provider->acquireLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
}
/**
@@ -639,6 +639,6 @@ abstract class Common implements Storage {
* @param \OCP\Lock\ILockingProvider $provider
*/
public function releaseLock($path, $type, ILockingProvider $provider) {
- $provider->releaseLock(md5($this->getId() . '::' . $path), $type);
+ $provider->releaseLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
}
}
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 166989ed77a..b499bbb3641 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -1621,9 +1621,11 @@ class View {
if (!$path) {
return [];
}
+
+ $path = trim($path, '/');
$parts = explode('/', $path);
- // remove the singe file
+ // remove the single file
array_pop($parts);
$result = array('/');
$resultPath = '';