diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2018-10-19 12:19:53 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-10-19 12:19:53 +0200 |
commit | b51e503aea0deb28916cd6e2adcddd187651eee5 (patch) | |
tree | 4a500b1aca91d5c3c8227d60653424882c0a5bae /apps/dav/lib | |
parent | a1ea504edf529a364be9b66fda5d100d62dcc0b9 (diff) | |
download | nextcloud-server-b51e503aea0deb28916cd6e2adcddd187651eee5.tar.gz nextcloud-server-b51e503aea0deb28916cd6e2adcddd187651eee5.zip |
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')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/File.php | 11 |
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); } |