@@ -38,8 +38,8 @@ func onLookup(ctx context.Context, w *response, userHandle Handler) error {
38
38
if err != nil {
39
39
return & NFSStatusError {NFSStatusStale , err }
40
40
}
41
- contents , err := fs .ReadDir (fs .Join (p ... ))
42
- if err != nil {
41
+ dirInfo , err := fs .Lstat (fs .Join (p ... ))
42
+ if err != nil || ! dirInfo . IsDir () {
43
43
return & NFSStatusError {NFSStatusNotDir , err }
44
44
}
45
45
@@ -70,22 +70,18 @@ func onLookup(ctx context.Context, w *response, userHandle Handler) error {
70
70
return nil
71
71
}
72
72
73
- // TODO: use sorting rather than linear
74
- for _ , f := range contents {
75
- if bytes .Equal ([]byte (f .Name ()), obj .Filename ) {
76
- newPath := append (p , f .Name ())
77
- newHandle := userHandle .ToHandle (fs , newPath )
78
- resp , err := lookupSuccessResponse (newHandle , newPath , p , fs )
79
- if err != nil {
80
- return & NFSStatusError {NFSStatusServerFault , err }
81
- }
82
- if err := w .Write (resp ); err != nil {
83
- return & NFSStatusError {NFSStatusServerFault , err }
84
- }
85
- return nil
86
- }
73
+ reqPath := append (p , string (obj .Filename ))
74
+ if _ , err = fs .Lstat (fs .Join (reqPath ... )); err != nil {
75
+ return & NFSStatusError {NFSStatusNoEnt , os .ErrNotExist }
87
76
}
88
77
89
- Log .Errorf ("No file for lookup of %v\n " , string (obj .Filename ))
90
- return & NFSStatusError {NFSStatusNoEnt , os .ErrNotExist }
78
+ newHandle := userHandle .ToHandle (fs , reqPath )
79
+ resp , err := lookupSuccessResponse (newHandle , reqPath , p , fs )
80
+ if err != nil {
81
+ return & NFSStatusError {NFSStatusServerFault , err }
82
+ }
83
+ if err := w .Write (resp ); err != nil {
84
+ return & NFSStatusError {NFSStatusServerFault , err }
85
+ }
86
+ return nil
91
87
}
0 commit comments