]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core-varlink: switch to PidRef + manager_get_unit_by_pidref() 33823/head
authorMike Yuan <me@yhndnzj.com>
Tue, 23 Jul 2024 15:14:39 +0000 (17:14 +0200)
committerMike Yuan <me@yhndnzj.com>
Tue, 23 Jul 2024 17:38:58 +0000 (19:38 +0200)
src/core/core-varlink.c

index 93dfdd2e2665237c7689def69596fdd12d75c3bc..ba6d50b504b8115dbabee7f3b5721b8bf7f23b09 100644 (file)
@@ -10,6 +10,7 @@
 #include "varlink-internal.h"
 #include "varlink-io.systemd.UserDatabase.h"
 #include "varlink-io.systemd.ManagedOOM.h"
+#include "varlink-util.h"
 
 typedef struct LookupParameters {
         const char *user_name;
@@ -218,19 +219,18 @@ static int vl_method_subscribe_managed_oom_cgroups(
                 sd_varlink_method_flags_t flags,
                 void *userdata) {
 
-        _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
         Manager *m = ASSERT_PTR(userdata);
-        pid_t pid;
+        _cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
         Unit *u;
         int r;
 
         assert(link);
 
-        r = sd_varlink_get_peer_pid(link, &pid);
+        r = varlink_get_peer_pidref(link, &pidref);
         if (r < 0)
                 return r;
 
-        u = manager_get_unit_by_pid(m, pid);
+        u = manager_get_unit_by_pidref(m, &pidref);
         if (!u)
                 return sd_varlink_error(link, SD_VARLINK_ERROR_PERMISSION_DENIED, NULL);
 
@@ -247,6 +247,8 @@ static int vl_method_subscribe_managed_oom_cgroups(
         if (FLAGS_SET(flags, SD_VARLINK_METHOD_MORE) && m->managed_oom_varlink)
                 return sd_varlink_error(link, "io.systemd.ManagedOOM.SubscriptionTaken", NULL);
 
+        _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
+
         r = build_managed_oom_cgroups_json(m, &v);
         if (r < 0)
                 return r;