Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2020-08-21 11:31:03 +0300
committerKamil Trzciński <ayufan@ayufan.eu>2020-08-21 11:32:13 +0300
commit52f4fac230f4a702a53dac3a711c0693bc104a6c (patch)
tree6e58cc0800cf8e30c45ac83b41a25bd76c939fee
parentc205fde879d5e5cd6ff97fdccdc097e7128a67cc (diff)
Use `Seek` for cached requestszip-supports-range-requests
-rw-r--r--internal/vfs/zip/http_range/http_read_at.go8
-rw-r--r--internal/vfs/zip/http_range/http_reader.go17
2 files changed, 4 insertions, 21 deletions
diff --git a/internal/vfs/zip/http_range/http_read_at.go b/internal/vfs/zip/http_range/http_read_at.go
index a819fe2a..9bbf13da 100644
--- a/internal/vfs/zip/http_range/http_read_at.go
+++ b/internal/vfs/zip/http_range/http_read_at.go
@@ -9,10 +9,10 @@ type ReadAtReader struct {
cachedReader *Reader
}
-func (h *ReadAtReader) cachedRead(p []byte, off int64) (n int, err error) {
- if !h.cachedReader.CanRead(off, int64(len(p))) {
- h.cachedReader.Close()
- h.cachedReader = NewReader(h.R, off, h.R.Size-off)
+func (h *ReadAtReader) cachedRead(p []byte, off int64) (int, error) {
+ _, err := h.cachedReader.Seek(off, io.SeekStart)
+ if err != nil {
+ return 0, err
}
return io.ReadFull(h.cachedReader, p)
diff --git a/internal/vfs/zip/http_range/http_reader.go b/internal/vfs/zip/http_range/http_reader.go
index 4855aba1..cb1ecfab 100644
--- a/internal/vfs/zip/http_range/http_reader.go
+++ b/internal/vfs/zip/http_range/http_reader.go
@@ -140,23 +140,6 @@ func (h *Reader) Seek(offset int64, whence int) (int64, error) {
return newOffset - h.rangeStart, nil
}
-// CanRead checks if a given data can be read from the current offset
-func (h *Reader) CanRead(offset, n int64) bool {
- if offset < 0 || n < 0 {
- return false
- }
-
- if h.offset != offset {
- return false
- }
-
- if offset+n >= h.rangeStart+h.rangeSize {
- return false
- }
-
- return true
-}
-
// Read reads a data into a given buffer
func (h *Reader) Read(p []byte) (int, error) {
if len(p) == 0 {