From fe440248683fb74d758dd257272efcffb7e3c325 Mon Sep 17 00:00:00 2001
From: Vincent Petry <pvince81@owncloud.com>
Date: Wed, 20 Nov 2013 16:20:21 +0100
Subject: [PATCH] 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)
---
 apps/files_encryption/lib/proxy.php  | 3 +++
 apps/files_encryption/lib/stream.php | 3 ++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php
index 54c3b9caa1..a8c74bd9dd 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 1738955d1a..1f4f14d7fe 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
-- 
GitLab