From 9ab291355f0b95744fe73335e3f2d3ae775b016c Mon Sep 17 00:00:00 2001 From: Adrian Szyndela Date: Tue, 31 Mar 2020 12:21:31 +0200 Subject: [PATCH] test-bus-track: add possibility of succeeding with kdbus --- src/libsystemd/sd-bus/test-bus-track.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/libsystemd/sd-bus/test-bus-track.c b/src/libsystemd/sd-bus/test-bus-track.c index 68a0010..5056b48 100644 --- a/src/libsystemd/sd-bus/test-bus-track.c +++ b/src/libsystemd/sd-bus/test-bus-track.c @@ -3,6 +3,8 @@ #include #include +#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); -- 2.7.4