aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/mbf/daemon.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-04-19 15:03:52 +0900
committerOphestra <cat@gensokyo.uk>2026-04-19 15:03:52 +0900
commit4dcec401564b42c8ab581cdea93f092e105d69a4 (patch)
tree720b7767e22355b62ed8e2ec503d837105e49c07 /cmd/mbf/daemon.go
parent9a274c78a396f3e4ad1eae54e77bc9294044d5cc (diff)
cmd/mbf: close on cancel completion
Like the previous change, this enables synchronisation on the client side via epoll. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'cmd/mbf/daemon.go')
-rw-r--r--cmd/mbf/daemon.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/cmd/mbf/daemon.go b/cmd/mbf/daemon.go
index 9d410588..c0b9e73a 100644
--- a/cmd/mbf/daemon.go
+++ b/cmd/mbf/daemon.go
@@ -99,10 +99,9 @@ func cancelIdent(
var ident pkg.ID
if _, err := io.ReadFull(conn, ident[:]); err != nil {
return nil, false, errors.Join(err, conn.Close())
- } else if err = conn.Close(); err != nil {
- return nil, false, err
}
- return &ident, cache.Cancel(unique.Make(ident)), nil
+ ok := cache.Cancel(unique.Make(ident))
+ return &ident, ok, conn.Close()
}
// serve services connections from a [net.UnixListener].
@@ -324,7 +323,10 @@ func cancelRemote(
} else if n != len(id) {
return errors.Join(io.ErrShortWrite, conn.Close())
}
- return conn.Close()
+ if _, err = conn.Read(make([]byte, 1)); err == io.EOF {
+ err = nil
+ }
+ return errors.Join(err, conn.Close())
}
// abortRemote aborts all [pkg.Artifact] curing on a daemon.