systemd/0331-sd-varlink-introduce-sd_varlink_get_current_method.patch
Jan Macku eb5b3a87a8 systemd-257-8
Resolves: RHEL-71409, RHEL-75774
2025-02-14 10:09:33 +01:00

70 lines
2.4 KiB
Diff

From d0199162ba3426385535ff7bcef1955c8fc54e9b Mon Sep 17 00:00:00 2001
From: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Sat, 4 Jan 2025 21:18:42 +0900
Subject: [PATCH] sd-varlink: introduce sd_varlink_get_current_method()
(cherry picked from commit ffe292330337b4c78932cde808463752196f531f)
Resolves: RHEL-75774
---
src/libsystemd/libsystemd.sym | 5 +++++
src/libsystemd/sd-varlink/sd-varlink.c | 19 +++++++++++++++++++
src/systemd/sd-varlink.h | 1 +
3 files changed, 25 insertions(+)
diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym
index a76dc7e4ae..4dbe4e3c76 100644
--- a/src/libsystemd/libsystemd.sym
+++ b/src/libsystemd/libsystemd.sym
@@ -1059,3 +1059,8 @@ global:
sd_device_monitor_get_timeout;
sd_device_monitor_receive;
} LIBSYSTEMD_256;
+
+LIBSYSTEMD_258 {
+global:
+ sd_varlink_get_current_method;
+} LIBSYSTEMD_257;
diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c
index 7038cba5db..5f3b17199d 100644
--- a/src/libsystemd/sd-varlink/sd-varlink.c
+++ b/src/libsystemd/sd-varlink/sd-varlink.c
@@ -1542,6 +1542,25 @@ _public_ int sd_varlink_dispatch_again(sd_varlink *v) {
return 0;
}
+_public_ int sd_varlink_get_current_method(sd_varlink *v, const char **ret) {
+ assert_return(v, -EINVAL);
+
+ if (!v->current)
+ return -ENODATA;
+
+ sd_json_variant *p = sd_json_variant_by_key(v->current, "method");
+ if (!p)
+ return -ENODATA;
+
+ const char *s = sd_json_variant_string(p);
+ if (!s)
+ return -ENODATA;
+
+ if (ret)
+ *ret = s;
+ return 0;
+}
+
_public_ int sd_varlink_get_current_parameters(sd_varlink *v, sd_json_variant **ret) {
sd_json_variant *p;
diff --git a/src/systemd/sd-varlink.h b/src/systemd/sd-varlink.h
index 17cf8b7386..9401d417b2 100644
--- a/src/systemd/sd-varlink.h
+++ b/src/systemd/sd-varlink.h
@@ -176,6 +176,7 @@ int sd_varlink_notifyb(sd_varlink *v, ...);
int sd_varlink_dispatch_again(sd_varlink *v);
/* Get the currently processed incoming message */
+int sd_varlink_get_current_method(sd_varlink *v, const char **ret);
int sd_varlink_get_current_parameters(sd_varlink *v, sd_json_variant **ret);
/* Parsing incoming data via json_dispatch() and generate a nice error on parse errors */