]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
analyze: use normal bus connection for "plot" verb (#7685)
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 18 Dec 2017 18:35:03 +0000 (19:35 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 18 Dec 2017 18:35:03 +0000 (19:35 +0100)
We need to connect to hostnamed, so a private bus connection is no good.
It'd be simpler to use the normal bus connection unconditionally, but
that'd mean that e.g. systemd-analyze set-log-level might not work in
emergency mode. So let's keep trying to use the private connection except
for "plot".

Fixes #7667.

src/analyze/analyze.c

index d45c1dc496a639a71687ab967469f274be0917d0..7f35b04c3136e6f1f8a67ccc3d4124745cc4f9d3 100644 (file)
@@ -130,6 +130,13 @@ struct host_info {
         char *architecture;
 };
 
+static int acquire_bus(bool need_full_bus, sd_bus **bus) {
+        if (need_full_bus)
+                return bus_connect_transport(arg_transport, arg_host, arg_user, bus);
+        else
+                return bus_connect_transport_systemd(arg_transport, arg_host, arg_user, bus);
+}
+
 static int bus_get_uint64_property(sd_bus *bus, const char *path, const char *interface, const char *property, uint64_t *val) {
         _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
         int r;
@@ -1688,7 +1695,7 @@ int main(int argc, char *argv[]) {
         else {
                 _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
 
-                r = bus_connect_transport_systemd(arg_transport, arg_host, arg_user, &bus);
+                r = acquire_bus(streq_ptr(argv[optind], "plot"), &bus);
                 if (r < 0) {
                         log_error_errno(r, "Failed to create bus connection: %m");
                         goto finish;