summaryrefslogtreecommitdiffstats
path: root/apps/dav
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-03-01 14:47:09 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-03-01 14:47:09 +0100
commit900dcf6594d51f603b1a863020363987ed7ab003 (patch)
tree6659ce4dc2daac1e949c2830c1302bbef2e4c49c /apps/dav
parenta83af96dd3eccb5aa5ee11b9b699f997a144a96e (diff)
parent57babe032b1c3abcf4e4208bb19488151a934470 (diff)
downloadnextcloud-server-900dcf6594d51f603b1a863020363987ed7ab003.tar.gz
nextcloud-server-900dcf6594d51f603b1a863020363987ed7ab003.zip
Merge pull request #22699 from owncloud/checksum_int_test
Checksum intergration tests and fixes
Diffstat (limited to 'apps/dav')
-rw-r--r--apps/dav/lib/connector/sabre/file.php15
-rw-r--r--apps/dav/lib/connector/sabre/filesplugin.php7
2 files changed, 20 insertions, 2 deletions
diff --git a/apps/dav/lib/connector/sabre/file.php b/apps/dav/lib/connector/sabre/file.php
index 38a1ee5f4e2..9c8344bc5db 100644
--- a/apps/dav/lib/connector/sabre/file.php
+++ b/apps/dav/lib/connector/sabre/file.php
@@ -215,11 +215,16 @@ class File extends Node implements IFile {
}
}
+ $this->refreshInfo();
+
if (isset($request->server['HTTP_OC_CHECKSUM'])) {
$checksum = trim($request->server['HTTP_OC_CHECKSUM']);
$this->fileView->putFileInfo($this->path, ['checksum' => $checksum]);
+ $this->refreshInfo();
+ } else if ($this->getChecksum() !== null && $this->getChecksum() !== '') {
+ $this->fileView->putFileInfo($this->path, ['checksum' => '']);
+ $this->refreshInfo();
}
- $this->refreshInfo();
} catch (StorageNotAvailableException $e) {
throw new ServiceUnavailable("Failed to check file size: " . $e->getMessage());
@@ -457,8 +462,16 @@ class File extends Node implements IFile {
$this->emitPostHooks($exists, $targetPath);
+ // FIXME: should call refreshInfo but can't because $this->path is not the of the final file
$info = $this->fileView->getFileInfo($targetPath);
+ if (isset($request->server['HTTP_OC_CHECKSUM'])) {
+ $checksum = trim($request->server['HTTP_OC_CHECKSUM']);
+ $this->fileView->putFileInfo($targetPath, ['checksum' => $checksum]);
+ } else if ($info->getChecksum() !== null && $info->getChecksum() !== '') {
+ $this->fileView->putFileInfo($this->path, ['checksum' => '']);
+ }
+
$this->fileView->unlockFile($targetPath, ILockingProvider::LOCK_SHARED);
return $info->getEtag();
diff --git a/apps/dav/lib/connector/sabre/filesplugin.php b/apps/dav/lib/connector/sabre/filesplugin.php
index eb9116d219b..4b05922adfd 100644
--- a/apps/dav/lib/connector/sabre/filesplugin.php
+++ b/apps/dav/lib/connector/sabre/filesplugin.php
@@ -27,6 +27,7 @@
namespace OCA\DAV\Connector\Sabre;
+use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\IFile;
use \Sabre\DAV\PropFind;
use \Sabre\DAV\PropPatch;
@@ -197,7 +198,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
//Add OC-Checksum header
/** @var $node File */
$checksum = $node->getChecksum();
- if ($checksum !== null) {
+ if ($checksum !== null && $checksum !== '') {
$response->addHeader('OC-Checksum', $checksum);
}
}
@@ -252,6 +253,10 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
$propFind->handle(self::CHECKSUMS_PROPERTYNAME, function() use ($node) {
$checksum = $node->getChecksum();
+ if ($checksum === NULL || $checksum === '') {
+ return null;
+ }
+
return new ChecksumList($checksum);
});