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:
authorRoeland Jago Douma <roeland@famdouma.nl>2018-10-19 13:19:53 +0300
committerRoeland Jago Douma <roeland@famdouma.nl>2018-10-19 13:19:53 +0300
commitb51e503aea0deb28916cd6e2adcddd187651eee5 (patch)
tree4a500b1aca91d5c3c8227d60653424882c0a5bae /apps/dav/lib/Connector/Sabre/File.php
parenta1ea504edf529a364be9b66fda5d100d62dcc0b9 (diff)
Do not emit preHooks twice on non-part-storage
The old code would emit the hooks twice. Thus having the version written twice. Which is not very performant as it is first read twice as well. Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'apps/dav/lib/Connector/Sabre/File.php')
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php11
1 files changed, 5 insertions, 6 deletions
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index e46bdcb2984..9e927ff85e5 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -140,6 +140,8 @@ class File extends Node implements IFile {
list($partStorage) = $this->fileView->resolvePath($this->path);
$needsPartFile = $partStorage->needsPartFile() && (strlen($this->path) > 1);
+ $view = \OC\Files\Filesystem::getView();
+
if ($needsPartFile) {
// mark file as partial while uploading (ignored by the scanner)
$partFilePath = $this->getPartFileBasePath($this->path) . '.ocTransferId' . rand() . '.part';
@@ -147,11 +149,11 @@ class File extends Node implements IFile {
// upload file directly as the final path
$partFilePath = $this->path;
- $this->emitPreHooks($exists);
+ if ($view && !$this->emitPreHooks($exists)) {
+ throw new Exception('Could not write to final file, canceled by hook');
+ }
}
- $view = \OC\Files\Filesystem::getView();
-
// the part file and target file might be on a different storage in case of a single file storage (e.g. single file share)
/** @var \OC\Files\Storage\Storage $partStorage */
list($partStorage, $internalPartPath) = $this->fileView->resolvePath($partFilePath);
@@ -159,9 +161,6 @@ class File extends Node implements IFile {
list($storage, $internalPath) = $this->fileView->resolvePath($this->path);
try {
if (!$needsPartFile) {
- if ($view && !$this->emitPreHooks($exists)) {
- throw new Exception('Could not write to final file, canceled by hook');
- }
$this->changeLock(ILockingProvider::LOCK_EXCLUSIVE);
}