diff options
author | Robin Appelman <icewind@owncloud.com> | 2015-08-03 17:33:12 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2015-08-03 17:33:12 +0200 |
commit | 7b70343dc33904e6582e16c6f3f6a9bd1f0a5124 (patch) | |
tree | dac2f30658196474156b981fdc5cdd3207bdbbf6 | |
parent | 767ca449889ba9be2c763f91c4e448939fde6ad8 (diff) | |
download | nextcloud-server-7b70343dc33904e6582e16c6f3f6a9bd1f0a5124.tar.gz nextcloud-server-7b70343dc33904e6582e16c6f3f6a9bd1f0a5124.zip |
fix infinite loops with propagating etags on reshares
-rw-r--r-- | apps/files_sharing/lib/propagation/recipientpropagator.php | 4 | ||||
-rw-r--r-- | apps/files_sharing/tests/etagpropagation.php | 19 |
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(); + } } |