fix(sse): don't update uncached files

Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
pull/39115/head
Richard Steinmetz 3 years ago
parent 2c71a77f4b
commit c4eccbb304
No known key found for this signature in database
GPG Key ID: 27137D9E7D273FB2
  1. 34
      lib/private/Files/Storage/Wrapper/Encryption.php

@ -17,6 +17,7 @@
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
* @author Vincent Petry <vincent@nextcloud.com>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license AGPL-3.0
*
@ -143,21 +144,28 @@ class Encryption extends Wrapper {
}
if (isset($this->unencryptedSize[$fullPath])) {
$size = $this->unencryptedSize[$fullPath];
// update file cache
if ($info instanceof ICacheEntry) {
$info['encrypted'] = $info['encryptedVersion'];
} else {
if (!is_array($info)) {
$info = [];
// Update file cache (only if file is already cached).
// Certain files are not cached (e.g. *.part).
if (isset($info['fileid'])) {
if ($info instanceof ICacheEntry) {
$info['encrypted'] = $info['encryptedVersion'];
} else {
/**
* @psalm-suppress RedundantCondition
*/
if (!is_array($info)) {
$info = [];
}
$info['encrypted'] = true;
$info = new CacheEntry($info);
}
$info['encrypted'] = true;
$info = new CacheEntry($info);
}
if ($size !== $info->getUnencryptedSize()) {
$this->getCache()->update($info->getId(), [
'unencrypted_size' => $size
]);
if ($size !== $info->getUnencryptedSize()) {
$this->getCache()->update($info->getId(), [
'unencrypted_size' => $size
]);
}
}
return $size;

Loading…
Cancel
Save