|
@ -234,12 +234,12 @@ func adjustHeaderContentDisposition(w http.ResponseWriter, r *http.Request, file |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func processRangeRequest(r *http.Request, w http.ResponseWriter, totalSize int64, mimeType string, writeFn func(writer io.Writer, offset int64, size int64, httpStatusCode int) error) { |
|
|
|
|
|
|
|
|
func processRangeRequest(r *http.Request, w http.ResponseWriter, totalSize int64, mimeType string, writeFn func(writer io.Writer, offset int64, size int64) error) { |
|
|
rangeReq := r.Header.Get("Range") |
|
|
rangeReq := r.Header.Get("Range") |
|
|
|
|
|
|
|
|
if rangeReq == "" { |
|
|
if rangeReq == "" { |
|
|
w.Header().Set("Content-Length", strconv.FormatInt(totalSize, 10)) |
|
|
w.Header().Set("Content-Length", strconv.FormatInt(totalSize, 10)) |
|
|
if err := writeFn(w, 0, totalSize, 0); err != nil { |
|
|
|
|
|
|
|
|
if err := writeFn(w, 0, totalSize); err != nil { |
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
@ -279,7 +279,7 @@ func processRangeRequest(r *http.Request, w http.ResponseWriter, totalSize int64 |
|
|
w.Header().Set("Content-Length", strconv.FormatInt(ra.length, 10)) |
|
|
w.Header().Set("Content-Length", strconv.FormatInt(ra.length, 10)) |
|
|
w.Header().Set("Content-Range", ra.contentRange(totalSize)) |
|
|
w.Header().Set("Content-Range", ra.contentRange(totalSize)) |
|
|
|
|
|
|
|
|
err = writeFn(w, ra.start, ra.length, http.StatusPartialContent) |
|
|
|
|
|
|
|
|
err = writeFn(w, ra.start, ra.length) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
http.Error(w, err.Error(), http.StatusInternalServerError) |
|
|
return |
|
|
return |
|
@ -307,7 +307,7 @@ func processRangeRequest(r *http.Request, w http.ResponseWriter, totalSize int64 |
|
|
pw.CloseWithError(e) |
|
|
pw.CloseWithError(e) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
if e = writeFn(part, ra.start, ra.length, 0); e != nil { |
|
|
|
|
|
|
|
|
if e = writeFn(part, ra.start, ra.length); e != nil { |
|
|
pw.CloseWithError(e) |
|
|
pw.CloseWithError(e) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|