提交 7915d260 作者: Łukasz Magiera

coreapi unixfs: fix Get seeking in gateway

License: MIT
Signed-off-by: 's avatarŁukasz Magiera <magik6k@gmail.com>
上级 34b1313d
......@@ -147,6 +147,10 @@ func cat(ctx context.Context, api iface.CoreAPI, paths []string, offset int64, m
return nil, 0, err
}
if f.IsDirectory() {
return nil, 0, iface.ErrIsDir
}
file := f.(catFile)
fsize, err := file.Size()
......
......@@ -179,11 +179,13 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr
}
dr, err := i.api.Unixfs().Get(ctx, resolvedPath)
dir := dr.IsDirectory()
switch err {
case nil:
// Cat() worked
defer dr.Close()
dir := false
switch {
case err == nil:
dir = dr.IsDirectory()
if !dir {
defer dr.Close()
}
default:
webError(w, "ipfs cat "+escapedURLPath, err, http.StatusNotFound)
return
......@@ -370,7 +372,7 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr
}
type sizeReadSeeker interface {
Size() uint64
Size() (int64, error)
io.ReadSeeker
}
......@@ -381,7 +383,7 @@ type sizeSeeker struct {
func (s *sizeSeeker) Seek(offset int64, whence int) (int64, error) {
if whence == io.SeekEnd && offset == 0 {
return int64(s.Size()), nil
return s.Size()
}
return s.sizeReadSeeker.Seek(offset, whence)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论