test-bus-track: add possibility of succeeding with kdbus
authorAdrian Szyndela <adrian.s@samsung.com>
Tue, 31 Mar 2020 10:21:31 +0000 (12:21 +0200)
committerŁukasz Stelmach <l.stelmach@samsung.com>
Thu, 25 Jan 2024 13:06:22 +0000 (14:06 +0100)
src/libsystemd/sd-bus/test-bus-track.c

index 68a0010..5056b48 100644 (file)
@@ -3,6 +3,8 @@
 #include <errno.h>
 #include <sys/socket.h>
 
+#include "bus-internal.h"
+#include "bus-kernel.h"
 #include "sd-bus.h"
 
 #include "macro.h"
@@ -21,7 +23,10 @@ static int track_cb_x(sd_bus_track *t, void *userdata) {
         /* This means b's name disappeared. Let's now disconnect, to make sure the track handling on disconnect works
          * as it should. */
 
-        assert_se(shutdown(sd_bus_get_fd(sd_bus_track_get_bus(t)), SHUT_RDWR) >= 0);
+        if (sd_bus_track_get_bus(t)->is_kernel)
+                assert_se(bus_kernel_try_close(sd_bus_track_get_bus(t)) >= 0);
+        else
+                assert_se(shutdown(sd_bus_get_fd(sd_bus_track_get_bus(t)), SHUT_RDWR) >= 0);
         return 1;
 }
 
@@ -96,7 +101,14 @@ int main(int argc, char *argv[]) {
         assert_se(r >= 0);
 
         /* Now make b's name disappear */
-        sd_bus_close(b);
+        if (b->is_kernel) {
+                r = sd_bus_try_close(b);
+                if (r < 0) {
+                        log_error("Cannot close kdbus, skipping the test");
+                        return EXIT_TEST_SKIP;
+                }
+        } else
+                sd_bus_close(b);
 
         r = sd_event_loop(event);
         assert_se(r >= 0);