From 0d267fd598292529d407c3974f71a23df01e806a Mon Sep 17 00:00:00 2001 From: MaeIsBad <26093674+MaeIsBad@users.noreply.github.com> Date: Wed, 12 Jul 2023 09:51:51 +0200 Subject: [PATCH] [bugfix] Properly handle range > content-length (#1979) This makes the serveFileRange function return the entire file if suffix-range is larger than content-length in compliance with RFC9110 Co-authored-by: mae --- internal/api/fileserver/servefile.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/api/fileserver/servefile.go b/internal/api/fileserver/servefile.go index 275bcc136..25a414319 100644 --- a/internal/api/fileserver/servefile.go +++ b/internal/api/fileserver/servefile.go @@ -208,10 +208,9 @@ func serveFileRange(rw http.ResponseWriter, r *http.Request, src io.Reader, rng } if end > size { - // This range exceeds length of the file, therefore unsatisfiable - rw.Header().Set("Content-Range", "bytes *"+strconv.FormatInt(size, 10)) - http.Error(rw, "Unsatisfiable Range", http.StatusRequestedRangeNotSatisfiable) - return + // According to the http spec if end >= size the server should return the rest of the file + // https://www.rfc-editor.org/rfc/rfc9110#section-14.1.2-6 + end = size - 1 } } else { // No end supplied, implying file end