summaryrefslogtreecommitdiff
path: root/internal/api
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api')
-rw-r--r--internal/api/client/media/mediacreate_test.go9
-rw-r--r--internal/api/fileserver/servefile.go18
2 files changed, 18 insertions, 9 deletions
diff --git a/internal/api/client/media/mediacreate_test.go b/internal/api/client/media/mediacreate_test.go
index 41a1fc16f..00f385032 100644
--- a/internal/api/client/media/mediacreate_test.go
+++ b/internal/api/client/media/mediacreate_test.go
@@ -19,7 +19,6 @@ package media_test
import (
"bytes"
- "context"
"crypto/rand"
"encoding/base64"
"encoding/json"
@@ -152,7 +151,7 @@ func (suite *MediaCreateTestSuite) TestMediaCreateSuccessful() {
// see what's in storage *before* the request
var storageKeysBeforeRequest []string
- if err := suite.storage.WalkKeys(ctx, func(ctx context.Context, key string) error {
+ if err := suite.storage.WalkKeys(ctx, func(key string) error {
storageKeysBeforeRequest = append(storageKeysBeforeRequest, key)
return nil
}); err != nil {
@@ -177,7 +176,7 @@ func (suite *MediaCreateTestSuite) TestMediaCreateSuccessful() {
// check what's in storage *after* the request
var storageKeysAfterRequest []string
- if err := suite.storage.WalkKeys(ctx, func(ctx context.Context, key string) error {
+ if err := suite.storage.WalkKeys(ctx, func(key string) error {
storageKeysAfterRequest = append(storageKeysAfterRequest, key)
return nil
}); err != nil {
@@ -237,7 +236,7 @@ func (suite *MediaCreateTestSuite) TestMediaCreateSuccessfulV2() {
// see what's in storage *before* the request
var storageKeysBeforeRequest []string
- if err := suite.storage.WalkKeys(ctx, func(ctx context.Context, key string) error {
+ if err := suite.storage.WalkKeys(ctx, func(key string) error {
storageKeysBeforeRequest = append(storageKeysBeforeRequest, key)
return nil
}); err != nil {
@@ -262,7 +261,7 @@ func (suite *MediaCreateTestSuite) TestMediaCreateSuccessfulV2() {
// check what's in storage *after* the request
var storageKeysAfterRequest []string
- if err := suite.storage.WalkKeys(ctx, func(ctx context.Context, key string) error {
+ if err := suite.storage.WalkKeys(ctx, func(key string) error {
storageKeysAfterRequest = append(storageKeysAfterRequest, key)
return nil
}); err != nil {
diff --git a/internal/api/fileserver/servefile.go b/internal/api/fileserver/servefile.go
index 8fb5a838e..fc6ef0e7e 100644
--- a/internal/api/fileserver/servefile.go
+++ b/internal/api/fileserver/servefile.go
@@ -224,10 +224,20 @@ func serveFileRange(rw http.ResponseWriter, r *http.Request, src io.Reader, rng
return
}
- // Dump the first 'start' many bytes into the void...
- if _, err := fastcopy.CopyN(io.Discard, src, start); err != nil {
- log.Errorf(r.Context(), "error reading from source: %v", err)
- return
+ if rs, ok := src.(io.ReadSeeker); ok {
+ // Source supports seeking (usually *os.File),
+ // seek to the 'start' byte position in file.
+ if _, err := rs.Seek(start, 0); err != nil {
+ log.Errorf(r.Context(), "error seeking in source: %v", err)
+ return
+ }
+ } else {
+ // Compat for when no seek call is implemented,
+ // dump the first 'start' many bytes into void.
+ if _, err := fastcopy.CopyN(io.Discard, src, start); err != nil {
+ log.Errorf(r.Context(), "error reading from source: %v", err)
+ return
+ }
}
// Determine new content length