* fix(crypt): premature close of MFile * refactor
This commit is contained in:
parent
7579d44517
commit
0126af4de0
@ -282,8 +282,9 @@ func (d *Crypt) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// 可以直接返回,读取完也不会调用Close,直到连接断开Close
|
//keep reuse same MFile and close at last.
|
||||||
return remoteLink.MFile, nil
|
remoteClosers.Add(remoteLink.MFile)
|
||||||
|
return io.NopCloser(remoteLink.MFile), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, errs.NotSupport
|
return nil, errs.NotSupport
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/alist-org/alist/v3/internal/model"
|
"github.com/alist-org/alist/v3/internal/model"
|
||||||
"github.com/alist-org/alist/v3/internal/net"
|
"github.com/alist-org/alist/v3/internal/net"
|
||||||
@ -102,11 +103,15 @@ func attachHeader(w http.ResponseWriter, file model.Obj) {
|
|||||||
w.Header().Set("Etag", GetEtag(file))
|
w.Header().Set("Etag", GetEtag(file))
|
||||||
}
|
}
|
||||||
func GetEtag(file model.Obj) string {
|
func GetEtag(file model.Obj) string {
|
||||||
|
hash := ""
|
||||||
for _, v := range file.GetHash().Export() {
|
for _, v := range file.GetHash().Export() {
|
||||||
if len(v) != 0 {
|
if strings.Compare(v, hash) > 0 {
|
||||||
return fmt.Sprintf(`"%s"`, v)
|
hash = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(hash) > 0 {
|
||||||
|
return fmt.Sprintf(`"%s"`, hash)
|
||||||
|
}
|
||||||
// 参考nginx
|
// 参考nginx
|
||||||
return fmt.Sprintf(`"%x-%x"`, file.ModTime().Unix(), file.GetSize())
|
return fmt.Sprintf(`"%x-%x"`, file.ModTime().Unix(), file.GetSize())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user