aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-04-19 18:24:11 +0900
committerOphestra <cat@gensokyo.uk>2026-04-19 18:24:11 +0900
commit753432cf09ac81fbfd9b5357ba6112f0d027c55d (patch)
treec9ef6cee4064ae26009f5f002ea8afd8acfeec21
parentf8902e3679f98356d2e2e01fce9a8bad56c76db8 (diff)
cmd/mbf: optionally wait for cancel
Synchronisation is not needed here during interactive use. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--cmd/mbf/daemon.go10
-rw-r--r--cmd/mbf/daemon_test.go4
-rw-r--r--cmd/mbf/main.go4
3 files changed, 11 insertions, 7 deletions
diff --git a/cmd/mbf/daemon.go b/cmd/mbf/daemon.go
index c0b9e73a..d694bea0 100644
--- a/cmd/mbf/daemon.go
+++ b/cmd/mbf/daemon.go
@@ -305,6 +305,7 @@ func cancelRemote(
ctx context.Context,
addr *net.UnixAddr,
a pkg.Artifact,
+ wait bool,
) error {
done, conn, err := dial(ctx, addr)
if err != nil {
@@ -323,8 +324,10 @@ func cancelRemote(
} else if n != len(id) {
return errors.Join(io.ErrShortWrite, conn.Close())
}
- if _, err = conn.Read(make([]byte, 1)); err == io.EOF {
- err = nil
+ if wait {
+ if _, err = conn.Read(make([]byte, 1)); err == io.EOF {
+ err = nil
+ }
}
return errors.Join(err, conn.Close())
}
@@ -333,6 +336,7 @@ func cancelRemote(
func abortRemote(
ctx context.Context,
addr *net.UnixAddr,
+ wait bool,
) error {
done, conn, err := dial(ctx, addr)
if err != nil {
@@ -341,7 +345,7 @@ func abortRemote(
defer close(done)
err = writeSpecialHeader(conn, specialAbort)
- if err == nil {
+ if wait && err == nil {
if _, err = conn.Read(make([]byte, 1)); err == io.EOF {
err = nil
}
diff --git a/cmd/mbf/daemon_test.go b/cmd/mbf/daemon_test.go
index d1d00eaa..7b825d0b 100644
--- a/cmd/mbf/daemon_test.go
+++ b/cmd/mbf/daemon_test.go
@@ -106,11 +106,11 @@ func TestDaemon(t *testing.T) {
}
}()
- if err = cancelRemote(ctx, &addr, pkg.NewFile("nonexistent", nil)); err != nil {
+ if err = cancelRemote(ctx, &addr, pkg.NewFile("nonexistent", nil), true); err != nil {
t.Fatalf("cancelRemote: error = %v", err)
}
- if err = abortRemote(ctx, &addr); err != nil {
+ if err = abortRemote(ctx, &addr, true); err != nil {
t.Fatalf("abortRemote: error = %v", err)
}
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index cbb6f7b2..b8516baa 100644
--- a/cmd/mbf/main.go
+++ b/cmd/mbf/main.go
@@ -489,7 +489,7 @@ func main() {
cc, cancel := context.WithDeadline(context.Background(), daemonDeadline())
defer cancel()
- if _err := cancelRemote(cc, &addr, a); _err != nil {
+ if _err := cancelRemote(cc, &addr, a, false); _err != nil {
log.Println(err)
}
}
@@ -523,7 +523,7 @@ func main() {
c.NewCommand(
"abort",
"Abort all pending cures on the daemon",
- func([]string) error { return abortRemote(ctx, &addr) },
+ func([]string) error { return abortRemote(ctx, &addr, false) },
)
{