]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared: varlink_server_contains_socket()
authorIvan Kruglov <mail@ikruglov.com>
Mon, 12 May 2025 11:18:00 +0000 (04:18 -0700)
committerIvan Kruglov <mail@ikruglov.com>
Tue, 13 May 2025 08:55:15 +0000 (01:55 -0700)
src/shared/varlink-serialize.c
src/shared/varlink-serialize.h

index 57a8d7908ea7271907acf1ca63b12b3ff5131b77..075cb6cc5e1ba0a3eeec9b4cab7176b7e1f8d0b0 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "log.h"
 #include "parse-util.h"
+#include "socket-util.h"
 #include "varlink-internal.h"
 #include "varlink-serialize.h"
 
@@ -84,3 +85,20 @@ int varlink_server_deserialize_one(sd_varlink_server *s, const char *value, FDSe
         LIST_PREPEND(sockets, s->sockets, TAKE_PTR(ss));
         return 0;
 }
+
+bool varlink_server_contains_socket(sd_varlink_server *s, const char *address) {
+        int r;
+
+        assert(s);
+        assert(address);
+
+        LIST_FOREACH(sockets, ss, s->sockets) {
+                r = socket_address_equal_unix(ss->address, address);
+                if (r < 0)
+                        log_debug_errno(r, "Failed to compare '%s' and '%s', ignoring: %m", ss->address, address);
+                if (r > 0)
+                        return true;
+        }
+
+        return false;
+}
index 149aa88b1121b9ce4ca0a5d096296f9e2d985d7b..4cc47aa05365f6c5220004d9ad43088be04c4f3b 100644 (file)
@@ -9,3 +9,5 @@
 
 int varlink_server_serialize(sd_varlink_server *s, FILE *f, FDSet *fds);
 int varlink_server_deserialize_one(sd_varlink_server *s, const char *value, FDSet *fds);
+
+bool varlink_server_contains_socket(sd_varlink_server *s, const char *address);