From: Thomas Müller Date: Mon, 30 Sep 2013 08:06:36 +0000 (+0200) Subject: Merge branch 'master' into fixing-4546-master X-Git-Tag: v6.0.0alpha2~11^2~4 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fe352664a2694c8ecb60ad835461829ae285cde7;p=nextcloud-server.git Merge branch 'master' into fixing-4546-master Conflicts: lib/connector/sabre/directory.php --- fe352664a2694c8ecb60ad835461829ae285cde7 diff --cc lib/connector/sabre/directory.php index 8a092c2455a,a50098df793..ddeef271a5b --- a/lib/connector/sabre/directory.php +++ b/lib/connector/sabre/directory.php @@@ -55,40 -55,59 +55,46 @@@ class OC_Connector_Sabre_Directory exte } if (isset($_SERVER['HTTP_OC_CHUNKED'])) { - $info = OC_FileChunking::decodeName($name); - if (empty($info)) { - throw new Sabre_DAV_Exception_NotImplemented(); - } - $chunk_handler = new OC_FileChunking($info); - $chunk_handler->store($info['index'], $data); - if ($chunk_handler->isComplete()) { - $newPath = $this->path . '/' . $info['name']; - $chunk_handler->file_assemble($newPath); - return OC_Connector_Sabre_Node::getETagPropertyForPath($newPath); - } - } else { - $newPath = $this->path . '/' . $name; - - // mark file as partial while uploading (ignored by the scanner) - $partpath = $newPath . '.part'; - - \OC\Files\Filesystem::file_put_contents($partpath, $data); - - //detect aborted upload - if (isset ($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PUT' ) { - if (isset($_SERVER['CONTENT_LENGTH'])) { - $expected = $_SERVER['CONTENT_LENGTH']; - $actual = \OC\Files\Filesystem::filesize($partpath); - if ($actual != $expected) { - \OC\Files\Filesystem::unlink($partpath); - throw new Sabre_DAV_Exception_BadRequest( - 'expected filesize ' . $expected . ' got ' . $actual); - } - } - } + return $this->createFileChunked($name, $data); + } + $newPath = $this->path . '/' . $name; - // rename to correct path - $renameOkay = \OC\Files\Filesystem::rename($partpath, $newPath); - $fileExists = \OC\Files\Filesystem::file_exists($newPath); - if ($renameOkay === false || $fileExists === false) { - \OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR); - \OC\Files\Filesystem::unlink($partpath); - throw new Sabre_DAV_Exception(); - } + // mark file as partial while uploading (ignored by the scanner) + $partpath = $newPath . '.part'; + + \OC\Files\Filesystem::file_put_contents($partpath, $data); - // allow sync clients to send the mtime along in a header - $mtime = OC_Request::hasModificationTime(); - if ($mtime !== false) { - if(\OC\Files\Filesystem::touch($newPath, $mtime)) { - header('X-OC-MTime: accepted'); + //detect aborted upload + if (isset ($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PUT' ) { + if (isset($_SERVER['CONTENT_LENGTH'])) { + $expected = $_SERVER['CONTENT_LENGTH']; + $actual = \OC\Files\Filesystem::filesize($partpath); + if ($actual != $expected) { + \OC\Files\Filesystem::unlink($partpath); + throw new Sabre_DAV_Exception_BadRequest( + 'expected filesize ' . $expected . ' got ' . $actual); } } + } - return OC_Connector_Sabre_Node::getETagPropertyForPath($newPath); + // rename to correct path - \OC\Files\Filesystem::rename($partpath, $newPath); ++ $renameOkay = \OC\Files\Filesystem::rename($partpath, $newPath); ++ $fileExists = \OC\Files\Filesystem::file_exists($newPath); ++ if ($renameOkay === false || $fileExists === false) { ++ \OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR); ++ \OC\Files\Filesystem::unlink($partpath); ++ throw new Sabre_DAV_Exception(); + } - return null; + // allow sync clients to send the mtime along in a header + $mtime = OC_Request::hasModificationTime(); + if ($mtime !== false) { + if(\OC\Files\Filesystem::touch($newPath, $mtime)) { + header('X-OC-MTime: accepted'); + } + } + + return OC_Connector_Sabre_Node::getETagPropertyForPath($newPath); } /**