]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl-start-unit: Subscribe() is unnecessary if we RefUnit explicitly
authorMike Yuan <me@yhndnzj.com>
Tue, 16 Apr 2024 17:32:27 +0000 (01:32 +0800)
committerMike Yuan <me@yhndnzj.com>
Fri, 19 Apr 2024 02:08:36 +0000 (10:08 +0800)
Subscribe() enables full signal delivery on API bus. But aside from
that, if a unit/job is explicitly Ref()'d, manager also emits the
signal. See bus_foreach_bus() for details.

bus-wait-for-units refs every unit to wait for, so there's no need
to Subscribe() on top of that. In verb_clean_or_freeze() Subscribe()
is not called either.

src/systemctl/systemctl-start-unit.c

index c1574f019e2e43c2acf7c97dafc3971b5745881a..8068d77d1cd5b5791684dcfd05068530e45b4ee5 100644 (file)
@@ -381,10 +381,6 @@ int verb_start(int argc, char *argv[], void *userdata) {
         }
 
         if (arg_wait) {
-                r = bus_call_method_async(bus, NULL, bus_systemd_mgr, "Subscribe", NULL, NULL, NULL);
-                if (r < 0)
-                        return log_error_errno(r, "Failed to enable subscription: %m");
-
                 r = bus_wait_for_units_new(bus, &wu);
                 if (r < 0)
                         return log_error_errno(r, "Failed to allocate unit watch context: %m");
@@ -408,7 +404,7 @@ int verb_start(int argc, char *argv[], void *userdata) {
                 }
 
         if (!arg_no_block) {
-                const charextra_args[4];
+                const char *extra_args[4];
                 WaitJobsFlags flags = 0;
 
                 SET_FLAG(flags, BUS_WAIT_JOBS_LOG_ERROR, !arg_quiet);