chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
busctl: exit cleanly when the bus connection is severed
[elogind.git]
/
src
/
libsystemd
/
sd-bus
/
busctl.c
diff --git
a/src/libsystemd/sd-bus/busctl.c
b/src/libsystemd/sd-bus/busctl.c
index c9eeb91b0c0dba17de769281f46a47b690344acf..c0d51e06a3b2a068dba479ac7cc51d0742b5c27d 100644
(file)
--- a/
src/libsystemd/sd-bus/busctl.c
+++ b/
src/libsystemd/sd-bus/busctl.c
@@
-1127,6
+1127,8
@@
static int monitor(sd_bus *bus, char *argv[], int (*dump)(sd_bus_message *m, FIL
return log_error_errno(r, "Failed to add match: %m");
}
return log_error_errno(r, "Failed to add match: %m");
}
+ log_info("Monitoring bus message stream.");
+
for (;;) {
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
for (;;) {
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
@@
-1136,6
+1138,12
@@
static int monitor(sd_bus *bus, char *argv[], int (*dump)(sd_bus_message *m, FIL
if (m) {
dump(m, stdout);
if (m) {
dump(m, stdout);
+
+ if (sd_bus_message_is_signal(m, "org.freedesktop.DBus.Local", "Disconnected") > 0) {
+ log_info("Connection terminated, exiting.");
+ return 0;
+ }
+
continue;
}
continue;
}