@@ -333,14 +333,20 @@ func (ptm *peerTaskManager) tryReuseStreamPeerTask(ctx context.Context, taskID s
333
333
attr [headers .ContentRange ] = fmt .Sprintf ("bytes %d-%d/%d" , reuseRange .Start ,
334
334
reuseRange .Start + reuseRange .Length - 1 , reuse .ContentLength )
335
335
} 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 )
341
349
}
342
- attr [headers .ContentRange ] = fmt .Sprintf ("bytes %d-%d/*" , request .Range .Start ,
343
- request .Range .Start + length - 1 )
344
350
}
345
351
346
352
// TODO record time when file closed, need add a type to implement Close and WriteTo
0 commit comments