From 854890a7345788684764026922b2fd2f3e6bd573 Mon Sep 17 00:00:00 2001 From: Unpublished Date: Mon, 22 Feb 2021 15:59:26 +0100 Subject: [PATCH] Add X-Accel-Buffering header to downloads Signed-off-by: Unpublished --- apps/dav/lib/Connector/Sabre/FilesPlugin.php | 1 + apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php | 7 +++++-- lib/private/Streamer.php | 1 + lib/private/legacy/OC_Files.php | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index 95f3db9a65b32..1a27060eaceb5 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -289,6 +289,7 @@ public function httpGet(RequestInterface $request, ResponseInterface $response) $response->addHeader('OC-Checksum', $checksum); } } + $response->addHeader('X-Accel-Buffering', 'no'); } /** diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php index 201b2b863ab17..777a730ffd1b5 100644 --- a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php @@ -590,9 +590,12 @@ public function testDownloadHeaders($isClumsyAgent, $contentDispositionHeader) { ->willReturn($isClumsyAgent); $response - ->expects($this->once()) + ->expects($this->exactly(2)) ->method('addHeader') - ->with('Content-Disposition', $contentDispositionHeader); + ->withConsecutive( + ['Content-Disposition', $contentDispositionHeader], + ['X-Accel-Buffering', 'no'] + ); $this->plugin->httpGet($request, $response); } diff --git a/lib/private/Streamer.php b/lib/private/Streamer.php index 176334b971df4..80ab5a5524cd0 100644 --- a/lib/private/Streamer.php +++ b/lib/private/Streamer.php @@ -95,6 +95,7 @@ public function __construct(IRequest $request, int $size, int $numberOfFiles) { * @param string $name */ public function sendHeaders($name) { + header('X-Accel-Buffering: no'); $extension = $this->streamerInstance instanceof ZipStreamer ? '.zip' : '.tar'; $fullName = $name . $extension; $this->streamerInstance->sendHeaders($fullName); diff --git a/lib/private/legacy/OC_Files.php b/lib/private/legacy/OC_Files.php index d1af5b24bdd48..41ac20577b2cf 100644 --- a/lib/private/legacy/OC_Files.php +++ b/lib/private/legacy/OC_Files.php @@ -98,6 +98,7 @@ private static function sendHeaders($filename, $name, array $rangeArray) { } } header('Content-Type: '.$type, true); + header('X-Accel-Buffering: no'); } /**