Skip to content

Commit b6c9249

Browse files
authored
feat: add accept ranges header (#3433)
* feat: add accept ranges header * chore: optimize content range for reuse Signed-off-by: Jim Ma <majinjing3@gmail.com>
1 parent 44658cf commit b6c9249

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

client/daemon/peer/peertask_reuse.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -333,14 +333,20 @@ func (ptm *peerTaskManager) tryReuseStreamPeerTask(ctx context.Context, taskID s
333333
attr[headers.ContentRange] = fmt.Sprintf("bytes %d-%d/%d", reuseRange.Start,
334334
reuseRange.Start+reuseRange.Length-1, reuse.ContentLength)
335335
} else if request.Range != nil {
336-
// the length is from reuse task, ensure it equal with request
337-
// skip check no range end case
338-
if length != request.Range.Length && hasRangeEnd(request.URLMeta.Range) {
339-
log.Errorf("target task length %d did not match range length %d", length, request.Range.Length)
340-
return nil, nil, false
336+
// skip check length for no range end case
337+
if !hasRangeEnd(request.URLMeta.Range) {
338+
// no range end, indicate start + length = total size
339+
attr[headers.ContentRange] = fmt.Sprintf("bytes %d-%d/%d", request.Range.Start,
340+
request.Range.Start+length-1, request.Range.Start+length)
341+
} else {
342+
// the length is from reuse task, ensure it equal with request
343+
if length != request.Range.Length {
344+
log.Errorf("target task length %d did not match range length %d", length, request.Range.Length)
345+
return nil, nil, false
346+
}
347+
attr[headers.ContentRange] = fmt.Sprintf("bytes %d-%d/*", request.Range.Start,
348+
request.Range.Start+length-1)
341349
}
342-
attr[headers.ContentRange] = fmt.Sprintf("bytes %d-%d/*", request.Range.Start,
343-
request.Range.Start+length-1)
344350
}
345351

346352
// TODO record time when file closed, need add a type to implement Close and WriteTo

client/daemon/transport/transport.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,8 @@ local:
402402

403403
var contentLength int64 = -1
404404
if l, ok := attr[headers.ContentLength]; ok {
405+
// for library like opencv, it depends on AcceptRanges, otherwise it will complain "partial file" error
406+
hdr.Set(headers.AcceptRanges, "bytes")
405407
if i, e := strconv.ParseInt(l, 10, 64); e == nil {
406408
contentLength = i
407409
}

0 commit comments

Comments
 (0)