diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-10-04 20:27:27 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-10-04 20:31:14 +0900 |
| commit | 9462af08f38fefe40d985383d8825258a6d1f0a8 (patch) | |
| tree | 3543a33e3872e854e46187287f5fa5f9d935a102 /system | |
| parent | a5f0aa3f3077cb7bf3cbf7ac9e707ba165aceb4a (diff) | |
system/dbus: dump buffer internally
This should have been an implementation detail and should not be up to the caller to call it.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'system')
| -rw-r--r-- | system/dbus.go | 16 | ||||
| -rw-r--r-- | system/dbus_test.go | 8 |
2 files changed, 12 insertions, 12 deletions
diff --git a/system/dbus.go b/system/dbus.go index 9e1b92dd..81236b48 100644 --- a/system/dbus.go +++ b/system/dbus.go @@ -22,7 +22,7 @@ var ( // MustProxyDBus calls ProxyDBus and panics if an error is returned. func (sys *I) MustProxyDBus(sessionPath *container.Absolute, session *dbus.Config, systemPath *container.Absolute, system *dbus.Config) *I { - if _, err := sys.ProxyDBus(session, system, sessionPath, systemPath); err != nil { + if err := sys.ProxyDBus(session, system, sessionPath, systemPath); err != nil { panic(err.Error()) } else { return sys @@ -31,12 +31,12 @@ func (sys *I) MustProxyDBus(sessionPath *container.Absolute, session *dbus.Confi // ProxyDBus finalises configuration ahead of time and starts xdg-dbus-proxy via [dbus] and terminates it on revert. // This [Op] is always [Process] scoped. -func (sys *I) ProxyDBus(session, system *dbus.Config, sessionPath, systemPath *container.Absolute) (func(), error) { +func (sys *I) ProxyDBus(session, system *dbus.Config, sessionPath, systemPath *container.Absolute) error { d := new(dbusProxyOp) // session bus is required as otherwise this is effectively a very expensive noop if session == nil { - return nil, newOpErrorMessage("dbus", ErrDBusConfig, + return newOpErrorMessage("dbus", ErrDBusConfig, "attempted to create message bus proxy args without session bus config", false) } @@ -49,10 +49,10 @@ func (sys *I) ProxyDBus(session, system *dbus.Config, sessionPath, systemPath *c d.out = &linePrefixWriter{println: log.Println, prefix: "(dbus) ", buf: new(strings.Builder)} if final, err := sys.dbusFinalise(sessionBus, systemBus, session, system); err != nil { if errors.Is(err, syscall.EINVAL) { - return nil, newOpErrorMessage("dbus", err, + return newOpErrorMessage("dbus", err, "message bus proxy configuration contains NUL byte", false) } - return nil, newOpErrorMessage("dbus", err, + return newOpErrorMessage("dbus", err, fmt.Sprintf("cannot finalise message bus proxy: %v", err), false) } else { if sys.msg.IsVerbose() { @@ -69,7 +69,7 @@ func (sys *I) ProxyDBus(session, system *dbus.Config, sessionPath, systemPath *c } sys.ops = append(sys.ops, d) - return d.out.Dump, nil + return nil } // dbusProxyOp implements [I.ProxyDBus]. @@ -108,6 +108,10 @@ func (d *dbusProxyOp) revert(sys *I, _ *Criteria) error { exitMessage := "message bus proxy exit" defer func() { sys.msg.Verbose(exitMessage) }() + if d.out != nil { + d.out.Dump() + } + err := sys.dbusProxyWait(d.proxy) if errors.Is(err, context.Canceled) { exitMessage = "message bus proxy canceled upstream" diff --git a/system/dbus_test.go b/system/dbus_test.go index f20f984a..0f3033a4 100644 --- a/system/dbus_test.go +++ b/system/dbus_test.go @@ -82,10 +82,8 @@ func TestDBusProxyOp(t *testing.T) { Op: "dbus", Err: ErrDBusConfig, Msg: "attempted to create message bus proxy args without session bus config", } - if f, err := sys.ProxyDBus(nil, new(dbus.Config), nil, nil); !reflect.DeepEqual(err, wantErr) { + if err := sys.ProxyDBus(nil, new(dbus.Config), nil, nil); !reflect.DeepEqual(err, wantErr) { t.Errorf("ProxyDBus: error = %v, want %v", err, wantErr) - } else if f != nil { - t.Errorf("ProxyDBus: f = %p", f) } }, nil, stub.Expect{}}, @@ -120,7 +118,7 @@ func TestDBusProxyOp(t *testing.T) { Op: "dbus", Err: stub.UniqueError(0), Msg: "cannot finalise message bus proxy: unique error 0 injected by the test suite", } - if f, err := sys.ProxyDBus( + if err := sys.ProxyDBus( &dbus.Config{ // use impossible value here as an implicit assert that it goes through the stub Talk: []string{"session\x00"}, Filter: true, @@ -131,8 +129,6 @@ func TestDBusProxyOp(t *testing.T) { m("/tmp/hakurei.0/99dd71ee2146369514e0d10783368f8f/bus"), m("/tmp/hakurei.0/99dd71ee2146369514e0d10783368f8f/system_bus_socket")); !reflect.DeepEqual(err, wantErr) { t.Errorf("ProxyDBus: error = %v", err) - } else if f != nil { - t.Errorf("ProxyDBus: f = %p", f) } }, nil, stub.Expect{Calls: []stub.Call{ call("dbusAddress", stub.ExpectArgs{}, [2]string{"unix:path=/run/user/1000/bus", "unix:path=/run/dbus/system_bus_socket"}, nil), |
