aboutsummaryrefslogtreecommitdiffstats
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
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.
-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