lib9p

Go 9P library.
Log | Files | Refs | LICENSE

commit fa270be7d0b626e8c234971a89d2d8930ab66114
parent e4f2b619a7de1b1fa1a23b38290b75822a6152a8
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sun, 17 Dec 2023 08:46:39 +0900

close children after reading stat in sRead

Diffstat:
Mdiskfs/stat_unix.go | 1+
Mserver.go | 4+++-
2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/diskfs/stat_unix.go b/diskfs/stat_unix.go @@ -34,6 +34,7 @@ func fiStat(pool *QidPool, id fileID, info fs.FileInfo) *lib9p.Stat { } group, err := user.LookupGroupId(strconv.Itoa(int(stat.Gid))) if err != nil { + // BUG: in OpenBSD, "user: lookup groupid 1000: too many open files" panic(fmt.Errorf("group: %v", err)) } diff --git a/server.go b/server.go @@ -587,7 +587,6 @@ func sRead(ctx context.Context, s *Server, r *Req) { if err != nil { log.Printf("get children: %v", err) } - if ifcall.Offset != 0 && ifcall.Offset != r.Fid.dirOffset { Respond(ctx, r, fmt.Errorf("invalid dir offset")) return @@ -606,6 +605,9 @@ func sRead(ctx context.Context, s *Server, r *Req) { log.Printf("stat: %v", err) continue } + if err := children[k].Close(); err != nil { + log.Printf("close children: %v", err) + } st := fi.Sys().(*Stat) buf := st.marshal() if n+len(buf) > len(data) {