diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-04-19 18:24:11 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-04-19 18:24:11 +0900 |
| commit | 753432cf09ac81fbfd9b5357ba6112f0d027c55d (patch) | |
| tree | c9ef6cee4064ae26009f5f002ea8afd8acfeec21 | |
| parent | f8902e3679f98356d2e2e01fce9a8bad56c76db8 (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.go | 10 | ||||
| -rw-r--r-- | cmd/mbf/daemon_test.go | 4 | ||||
| -rw-r--r-- | cmd/mbf/main.go | 4 |
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) }, ) { |
