瀏覽代碼

Support seeking also from the end of file on S3 storage

The PR https://github.com/nextcloud/server/pull/20033 added support
for `fseek` for  the S3 storage backend. However, the seek mode SEEK_END
was left out that time. This PR fills this gap.

Signed-off-by: Pauli Järvinen <pauli.jarvinen@gmail.com>
tags/v23.0.0beta1
Pauli Järvinen 2 年之前
父節點
當前提交
a335592f14
共有 1 個檔案被更改,包括 10 行新增1 行删除
  1. 10
    1
      lib/private/Files/Stream/SeekableHttpStream.php

+ 10
- 1
lib/private/Files/Stream/SeekableHttpStream.php 查看文件

@@ -76,6 +76,8 @@ class SeekableHttpStream implements File {
private $current;
/** @var int */
private $offset = 0;
/** @var int */
private $length = 0;

private function reconnect(int $start) {
$range = $start . '-';
@@ -101,12 +103,14 @@ class SeekableHttpStream implements File {
$content = trim(explode(':', $contentRange)[1]);
$range = trim(explode(' ', $content)[1]);
$begin = intval(explode('-', $range)[0]);
$length = intval(explode('/', $range)[1]);

if ($begin !== $start) {
return false;
}

$this->offset = $begin;
$this->length = $length;

return true;
}
@@ -140,7 +144,12 @@ class SeekableHttpStream implements File {
}
return $this->reconnect($this->offset + $offset);
case SEEK_END:
return false;
if ($this->length === 0) {
return false;
} elseif ($this->length + $offset === $this->offset) {
return true;
}
return $this->reconnect($this->length + $offset);
}
return false;
}

Loading…
取消
儲存