Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-08-05 13:01:36 +0300
committerThomas Müller <thomas.mueller@tmit.eu>2015-08-05 13:01:36 +0300
commit1a1e19f929ff665ea781bc6a59f03af836663b86 (patch)
treeb1ce6f1d4ae87528a482ac2ed014dd5e041099a8
parent8c9b8f4fe9b5efa15178c78349d72f2de5c33634 (diff)
parent78a46dcac127f3606647e339e1993f87d6b1088c (diff)
Merge pull request #18054 from owncloud/shared-propagate-check-recipient-stable81
[8.1] fix infinite loops with propagating etags on reshares
-rw-r--r--apps/files_sharing/lib/propagation/recipientpropagator.php4
-rw-r--r--apps/files_sharing/tests/etagpropagation.php19
2 files changed, 16 insertions, 7 deletions
diff --git a/apps/files_sharing/lib/propagation/recipientpropagator.php b/apps/files_sharing/lib/propagation/recipientpropagator.php
index 97ea452aa6c..11764106861 100644
--- a/apps/files_sharing/lib/propagation/recipientpropagator.php
+++ b/apps/files_sharing/lib/propagation/recipientpropagator.php
@@ -133,8 +133,8 @@ class RecipientPropagator {
$this->markDirty($share, microtime(true));
// propagate up the share tree
- $user = $share['uid_owner'];
- if($user !== $this->userId) {
+ if ($share['share_with'] === $this->userId) {
+ $user = $share['uid_owner'];
$view = new View('/' . $user . '/files');
$path = $view->getPath($share['file_source']);
$watcher = new ChangeWatcher($view, $this->manager->getSharePropagator($user));
diff --git a/apps/files_sharing/tests/etagpropagation.php b/apps/files_sharing/tests/etagpropagation.php
index d978daf200c..8da4e6f29bd 100644
--- a/apps/files_sharing/tests/etagpropagation.php
+++ b/apps/files_sharing/tests/etagpropagation.php
@@ -266,15 +266,15 @@ class EtagPropagation extends TestCase {
\OCP\Share::unshare(
'folder',
$folderId,
- \OCP\Share::SHARE_TYPE_USER,
+ \OCP\Share::SHARE_TYPE_USER,
self::TEST_FILES_SHARING_API_USER2
)
);
$this->assertEtagsForFoldersChanged([
// direct recipient affected
- self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER2,
// reshare recipient affected
- self::TEST_FILES_SHARING_API_USER4,
+ self::TEST_FILES_SHARING_API_USER4,
]);
$this->assertAllUnchaged();
@@ -287,9 +287,9 @@ class EtagPropagation extends TestCase {
);
$this->assertEtagsForFoldersChanged([
// direct recipient affected
- self::TEST_FILES_SHARING_API_USER2,
+ self::TEST_FILES_SHARING_API_USER2,
// reshare recipient affected
- self::TEST_FILES_SHARING_API_USER4,
+ self::TEST_FILES_SHARING_API_USER4,
]);
$this->assertAllUnchaged();
@@ -398,4 +398,13 @@ class EtagPropagation extends TestCase {
$this->assertAllUnchaged();
}
+
+ public function testRecipientUploadInDirectReshare() {
+ $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2);
+ Filesystem::file_put_contents('/directReshare/test.txt', 'sad');
+ $this->assertEtagsNotChanged([self::TEST_FILES_SHARING_API_USER3]);
+ $this->assertEtagsChanged([self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER4]);
+
+ $this->assertAllUnchaged();
+ }
}