summaryrefslogtreecommitdiffstats
path: root/lib/private/connector
diff options
context:
space:
mode:
authorchli1 <chli1@users.noreply.github.com>2014-09-04 13:49:15 +0200
committerchli1 <chli1@users.noreply.github.com>2014-09-04 13:49:15 +0200
commit712487c861d56ae61459e86d4f50cf4c273a2133 (patch)
tree33f6e666e57f64ea4819d7c573358ff92c9bc644 /lib/private/connector
parenta8861c70c8e5876a961f00e49db88843432bf7ba (diff)
downloadnextcloud-server-712487c861d56ae61459e86d4f50cf4c273a2133.tar.gz
nextcloud-server-712487c861d56ae61459e86d4f50cf4c273a2133.zip
fix BadRequest error if CONTENT_LENGTH not set
If client does not send content length header on webdav upload (e.g. because the content comes from a stream and its length is not predictable) the put() method should not try to compare the content length value with the actually amount of received data, because this will always fail and results in a BadRequest exception. So the check will only be performed if $_SERVER['CONTENT_LENGTH'] is set.
Diffstat (limited to 'lib/private/connector')
-rw-r--r--lib/private/connector/sabre/file.php13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php
index 44c86e69719..5333583e78d 100644
--- a/lib/private/connector/sabre/file.php
+++ b/lib/private/connector/sabre/file.php
@@ -102,13 +102,16 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\
throw new OC_Connector_Sabre_Exception_FileLocked($e->getMessage(), $e->getCode(), $e);
}
+ // if content length is sent by client:
// double check if the file was fully received
// compare expected and actual size
- $expected = $_SERVER['CONTENT_LENGTH'];
- $actual = $this->fileView->filesize($partFilePath);
- if ($actual != $expected) {
- $this->fileView->unlink($partFilePath);
- throw new \Sabre\DAV\Exception\BadRequest('expected filesize ' . $expected . ' got ' . $actual);
+ if (isset($_SERVER['CONTENT_LENGTH'])) {
+ $expected = $_SERVER['CONTENT_LENGTH'];
+ $actual = $this->fileView->filesize($partFilePath);
+ if ($actual != $expected) {
+ $this->fileView->unlink($partFilePath);
+ throw new \Sabre\DAV\Exception\BadRequest('expected filesize ' . $expected . ' got ' . $actual);
+ }
}
// rename to correct path