aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2013-11-20 16:20:21 +0100
committerVincent Petry <pvince81@owncloud.com>2013-11-20 16:22:55 +0100
commitfe440248683fb74d758dd257272efcffb7e3c325 (patch)
tree6b3b23de8c16d785f2c4a786241fc579e1f1df26
parent8bc339413ba2221fea9447f91ae093f3f1cf2ab4 (diff)
downloadnextcloud-server-fe440248683fb74d758dd257272efcffb7e3c325.tar.gz
nextcloud-server-fe440248683fb74d758dd257272efcffb7e3c325.zip
Fix for extstorage + encryption where unencrypted size is not kept
Fix for external storage with encryption where the unencrypted size is first written in the DB, then set back to zero, causing performance issue because the file needs to be reopened every time to find out the unencrypted size (and potentially needs a full redownload)
-rw-r--r--apps/files_encryption/lib/proxy.php3
-rw-r--r--apps/files_encryption/lib/stream.php3
2 files changed, 5 insertions, 1 deletions
diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php
index 54c3b9caa15..a8c74bd9dd4 100644
--- a/apps/files_encryption/lib/proxy.php
+++ b/apps/files_encryption/lib/proxy.php
@@ -349,7 +349,10 @@ class Proxy extends \OC_FileProxy {
$fileInfo = false;
// get file info from database/cache if not .part file
if (!Helper::isPartialFilePath($path)) {
+ $proxyState = \OC_FileProxy::$enabled;
+ \OC_FileProxy::$enabled = false;
$fileInfo = $view->getFileInfo($path);
+ \OC_FileProxy::$enabled = $proxyState;
}
// if file is encrypted return real file size
diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php
index 1738955d1aa..1f4f14d7fe5 100644
--- a/apps/files_encryption/lib/stream.php
+++ b/apps/files_encryption/lib/stream.php
@@ -491,7 +491,8 @@ class Stream {
if (
$this->meta['mode'] !== 'r' &&
$this->meta['mode'] !== 'rb' &&
- $this->size > 0
+ $this->size > 0 &&
+ $this->unencryptedSize > 0
) {
// only write keyfiles if it was a new file