in internal/httprange/http_reader.go [156:184]
func (r *Reader) Seek(offset int64, whence int) (int64, error) {
var newOffset int64
switch whence {
case io.SeekStart:
newOffset = r.rangeStart + offset
case io.SeekCurrent:
newOffset = r.offset + offset
case io.SeekEnd:
newOffset = r.rangeStart + r.rangeSize + offset
default:
return 0, errSeekInvalidWhence
}
if newOffset < r.rangeStart || newOffset > r.rangeStart+r.rangeSize {
return 0, errSeekOutsideRange
}
if newOffset != r.offset {
// recycle r.res
r.Close()
}
r.offset = newOffset
return newOffset - r.rangeStart, nil
}