diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-04-19 15:03:52 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-04-19 15:03:52 +0900 |
| commit | 4dcec401564b42c8ab581cdea93f092e105d69a4 (patch) | |
| tree | 720b7767e22355b62ed8e2ec503d837105e49c07 | |
| parent | 9a274c78a396f3e4ad1eae54e77bc9294044d5cc (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>
| -rw-r--r-- | cmd/mbf/daemon.go | 10 |
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. |
