mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-07-18 17:38:07 +08:00
fix(crypt): bug caused by link cache
This commit is contained in:
@ -256,8 +256,9 @@ func (d *Crypt) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (
|
|||||||
}
|
}
|
||||||
resultRangeReadCloser := &model.RangeReadCloser{}
|
resultRangeReadCloser := &model.RangeReadCloser{}
|
||||||
resultRangeReadCloser.TryAdd(remoteLink.MFile)
|
resultRangeReadCloser.TryAdd(remoteLink.MFile)
|
||||||
if remoteLink.RangeReadCloser != nil {
|
remoteRangeReadCloser := remoteLink.RangeReadCloser
|
||||||
resultRangeReadCloser.AddClosers(remoteLink.RangeReadCloser.GetClosers())
|
if remoteRangeReadCloser != nil {
|
||||||
|
resultRangeReadCloser.AddClosers(remoteRangeReadCloser.GetClosers())
|
||||||
}
|
}
|
||||||
remoteFileSize := remoteFile.GetSize()
|
remoteFileSize := remoteFile.GetSize()
|
||||||
rangeReaderFunc := func(ctx context.Context, underlyingOffset, underlyingLength int64) (io.ReadCloser, error) {
|
rangeReaderFunc := func(ctx context.Context, underlyingOffset, underlyingLength int64) (io.ReadCloser, error) {
|
||||||
@ -273,18 +274,16 @@ func (d *Crypt) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (
|
|||||||
//keep reuse same MFile and close at last.
|
//keep reuse same MFile and close at last.
|
||||||
return io.NopCloser(remoteLink.MFile), nil
|
return io.NopCloser(remoteLink.MFile), nil
|
||||||
}
|
}
|
||||||
rrc := remoteLink.RangeReadCloser
|
if remoteRangeReadCloser == nil && len(remoteLink.URL) > 0 {
|
||||||
if rrc == nil && len(remoteLink.URL) > 0 {
|
|
||||||
var err error
|
var err error
|
||||||
rrc, err = stream.GetRangeReadCloserFromLink(remoteFileSize, remoteLink)
|
remoteRangeReadCloser, err = stream.GetRangeReadCloserFromLink(remoteFileSize, remoteLink)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
resultRangeReadCloser.AddClosers(rrc.GetClosers())
|
resultRangeReadCloser.AddClosers(remoteRangeReadCloser.GetClosers())
|
||||||
remoteLink.RangeReadCloser = rrc
|
|
||||||
}
|
}
|
||||||
if rrc != nil {
|
if remoteRangeReadCloser != nil {
|
||||||
remoteReader, err := rrc.RangeRead(ctx, http_range.Range{Start: underlyingOffset, Length: length})
|
remoteReader, err := remoteRangeReadCloser.RangeRead(ctx, http_range.Range{Start: underlyingOffset, Length: length})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user