@cryptotaxi247 / kubo / commits / a1d207343

unixfs: refactor switch in `precalcNextBuf`

Do not use `NewDagReader` just for the `RawNode` case. Treat invalid UnixFS types in the same case. License: MIT Signed-off-by: Lucas Molas <schomatis@gmail.com>

Lucas Molas committed Jul 16, 2018 at 10:54 UTC a1d207343aa1599f7caae663a243cd80b512a520
3 files changed +7 -14
unixfs/io/dagreader.go
+2 -2
@@ -3,7 +3,6 @@ package io
3 import (
4 "context"
5 "errors"
6 - "fmt"
6 "io"
7
8 mdag "github.com/ipfs/go-ipfs/merkledag"
@@ -17,6 +16,7 @@ import (
16 var (
17 ErrIsDir = errors.New("this dag node is a directory")
18 ErrCantReadSymlinks = errors.New("cannot currently read symlinks")
19 + ErrUnkownNodeType = errors.New("unknown node type")
20 )
21
22 // A DagReader provides read-only read and seek acess to a unixfs file.
@@ -74,6 +74,6 @@ func NewDagReader(ctx context.Context, n ipld.Node, serv ipld.NodeGetter) (DagRe
74 return nil, ft.ErrUnrecognizedType
75 }
76 default:
77 - return nil, fmt.Errorf("unrecognized node type")
77 + return nil, ErrUnkownNodeType
78 }
79 }
unixfs/io/pbdagreader.go
+5 -11
@@ -106,26 +106,20 @@ func (dr *PBDagReader) precalcNextBuf(ctx context.Context) error {
106 }
107
108 switch fsNode.Type() {
109 - case ftpb.Data_Directory, ftpb.Data_HAMTShard:
110 - // A directory should not exist within a file
111 - return ft.ErrInvalidDirLocation
109 case ftpb.Data_File:
110 dr.buf = NewPBFileReader(dr.ctx, nxt, fsNode, dr.serv)
111 return nil
112 case ftpb.Data_Raw:
113 dr.buf = NewBufDagReader(fsNode.Data())
114 return nil
118 - case ftpb.Data_Metadata:
119 - return errors.New("shouldnt have had metadata object inside file")
120 - case ftpb.Data_Symlink:
121 - return errors.New("shouldnt have had symlink inside file")
115 default:
123 - return ft.ErrUnrecognizedType
116 + return fmt.Errorf("found %s node in unexpected place", fsNode.Type().String())
117 }
118 + case *mdag.RawNode:
119 + dr.buf = NewBufDagReader(nxt.RawData())
120 + return nil
121 default:
126 - var err error
127 - dr.buf, err = NewDagReader(ctx, nxt, dr.serv)
128 - return err
122 + return ErrUnkownNodeType
123 }
124 }
125
unixfs/unixfs.go
-1
@@ -25,7 +25,6 @@ const (
25 // Common errors
26 var (
27 ErrMalformedFileFormat = errors.New("malformed data in file format")
28 - ErrInvalidDirLocation = errors.New("found directory node in unexpected place")
28 ErrUnrecognizedType = errors.New("unrecognized node type")
29 )
30