diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php index 28b2cf67640..a6b802ffe85 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -428,6 +428,7 @@ class View { $chunkSize = 524288; // 512 kB chunks while (!feof($handle)) { echo fread($handle, $chunkSize); + $this->checkConnectionStatus(); flush(); } fclose($handle); @@ -480,6 +481,7 @@ class View { $len = $chunkSize; } echo fread($handle, $len); + $this->checkConnectionStatus(); flush(); } return ftell($handle) - $from; @@ -490,6 +492,14 @@ class View { return false; } + + private function checkConnectionStatus(): void { + $connectionStatus = \connection_status(); + if ($connectionStatus !== 0) { + throw new \RuntimeException("Connection lost. Status: $connectionStatus"); + } + } + /** * @param string $path * @return mixed @@ -1053,7 +1063,6 @@ class View { public function fromTmpFile($tmpFile, $path) { $this->assertPathLength($path); if (Filesystem::isValidPath($path)) { - // Get directory that the file is going into $filePath = dirname($path); @@ -1809,7 +1818,6 @@ class View { * @return boolean */ private function targetIsNotShared(IStorage $targetStorage, string $targetInternalPath) { - // note: cannot use the view because the target is already locked $fileId = (int)$targetStorage->getCache()->getId($targetInternalPath); if ($fileId === -1) { diff --git a/lib/private/legacy/OC_Files.php b/lib/private/legacy/OC_Files.php index 6a3a44d6cc0..48e36dac2ce 100644 --- a/lib/private/legacy/OC_Files.php +++ b/lib/private/legacy/OC_Files.php @@ -238,9 +238,6 @@ class OC_Files { OC::$server->getLogger()->logException($ex); $l = \OC::$server->getL10N('lib'); $hint = method_exists($ex, 'getHint') ? $ex->getHint() : ''; - if ($event && $event->getErrorMessage() !== null) { - $hint .= ' ' . $event->getErrorMessage(); - } \OC_Template::printErrorPage($l->t('Cannot download file'), $hint, 200); } }