Based on 249968612f16a71df909d6e73785c18a9ff36a65 with src/core/dbus.c as well --- src/analyze/analyze.c | 2 +- src/bus-proxyd/bus-proxyd.c | 4 +--- src/cgroups-agent/cgroups-agent.c | 4 +--- src/core/dbus.c | 2 +- src/fsck/fsck.c | 2 +- src/hostname/hostnamectl.c | 2 +- src/hostname/hostnamed.c | 4 ++-- src/libsystemd/sd-bus/bus-util.h | 9 +++++++++ src/libsystemd/sd-bus/busctl.c | 2 +- src/locale/localectl.c | 2 +- src/locale/localed.c | 4 ++-- src/login/inhibit.c | 2 +- src/login/loginctl.c | 2 +- src/login/pam-module.c | 4 ++-- src/machine/machinectl.c | 4 ++-- src/nspawn/nspawn.c | 4 ++-- src/run/run.c | 2 +- src/systemctl/systemctl.c | 2 +- src/timedate/timedatectl.c | 2 +- src/timedate/timedated.c | 4 ++-- 20 files changed, 34 insertions(+), 29 deletions(-) --- src/analyze/analyze.c +++ src/analyze/analyze.c 2014-10-21 11:13:56.113045992 +0000 @@ -1264,7 +1264,7 @@ static int parse_argv(int argc, char *ar } int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); --- src/bus-proxyd/bus-proxyd.c +++ src/bus-proxyd/bus-proxyd.c 2014-10-21 11:16:16.303837968 +0000 @@ -427,7 +427,7 @@ static int patch_sender(sd_bus *a, sd_bu int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *a = NULL, *b = NULL; + _cleanup_bus_close_unref_ sd_bus *a = NULL, *b = NULL; sd_id128_t server_id; int r, in_fd, out_fd; bool got_hello = false; @@ -777,8 +777,6 @@ int main(int argc, char *argv[]) { r = 0; finish: - sd_bus_flush(a); - sd_bus_flush(b); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } --- src/cgroups-agent/cgroups-agent.c +++ src/cgroups-agent/cgroups-agent.c 2014-10-21 11:17:37.400197469 +0000 @@ -26,7 +26,7 @@ #include "bus-util.h" int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; if (argc != 2) { @@ -62,7 +62,5 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - sd_bus_flush(bus); - return EXIT_SUCCESS; } --- src/core/dbus.c +++ src/core/dbus.c 2014-10-17 09:52:47.000000000 +0000 @@ -639,7 +639,7 @@ static int bus_setup_disconnected_match( } static int bus_on_connection(sd_event_source *s, int fd, uint32_t revents, void *userdata) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; _cleanup_close_ int nfd = -1; Manager *m = userdata; sd_id128_t id; --- src/fsck/fsck.c +++ src/fsck/fsck.c 2014-10-21 11:18:06.003838037 +0000 @@ -45,7 +45,7 @@ static bool arg_show_progress = false; static void start_target(const char *target) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; assert(target); --- src/hostname/hostnamectl.c +++ src/hostname/hostnamectl.c 2014-10-21 11:18:19.915858156 +0000 @@ -468,7 +468,7 @@ static int hostnamectl_main(sd_bus *bus, } int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); --- src/hostname/hostnamed.c +++ src/hostname/hostnamed.c 2014-10-21 11:24:07.737447673 +0000 @@ -566,7 +566,7 @@ static const sd_bus_vtable hostname_vtab }; static int connect_bus(Context *c, sd_event *event, sd_bus **_bus) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; assert(c); @@ -607,7 +607,7 @@ int main(int argc, char *argv[]) { Context context = {}; _cleanup_event_unref_ sd_event *event = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; log_set_target(LOG_TARGET_AUTO); --- src/libsystemd/sd-bus/bus-util.h +++ src/libsystemd/sd-bus/bus-util.h 2014-10-17 09:51:34.000000000 +0000 @@ -137,11 +137,20 @@ typedef struct UnitInfo { int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u); +static inline void sd_bus_close_unrefp(sd_bus **bus) { + if (*bus) { + sd_bus_flush(*bus); + sd_bus_close(*bus); + sd_bus_unref(*bus); + } +} + DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus*, sd_bus_unref); DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_message*, sd_bus_message_unref); DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_creds*, sd_bus_creds_unref); #define _cleanup_bus_unref_ _cleanup_(sd_bus_unrefp) +#define _cleanup_bus_close_unref_ _cleanup_(sd_bus_close_unrefp) #define _cleanup_bus_message_unref_ _cleanup_(sd_bus_message_unrefp) #define _cleanup_bus_creds_unref_ _cleanup_(sd_bus_creds_unrefp) #define _cleanup_bus_error_free_ _cleanup_(sd_bus_error_free) --- src/libsystemd/sd-bus/busctl.c +++ src/libsystemd/sd-bus/busctl.c 2014-10-21 11:19:01.472337887 +0000 @@ -484,7 +484,7 @@ static int busctl_main(sd_bus *bus, int } int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; log_parse_environment(); --- src/locale/localectl.c +++ src/locale/localectl.c 2014-10-21 11:19:13.811947994 +0000 @@ -796,7 +796,7 @@ static int localectl_main(sd_bus *bus, i } int main(int argc, char*argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); --- src/locale/localed.c +++ src/locale/localed.c 2014-10-21 11:19:28.415837424 +0000 @@ -1076,7 +1076,7 @@ static const sd_bus_vtable locale_vtable }; static int connect_bus(Context *c, sd_event *event, sd_bus **_bus) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; assert(c); @@ -1116,7 +1116,7 @@ static int connect_bus(Context *c, sd_ev int main(int argc, char *argv[]) { Context context = {}; _cleanup_event_unref_ sd_event *event = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; log_set_target(LOG_TARGET_AUTO); --- src/login/inhibit.c +++ src/login/inhibit.c 2014-10-21 11:19:44.470844885 +0000 @@ -221,7 +221,7 @@ static int parse_argv(int argc, char *ar int main(int argc, char *argv[]) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; log_parse_environment(); --- src/login/loginctl.c +++ src/login/loginctl.c 2014-10-21 11:20:16.695837857 +0000 @@ -1298,7 +1298,7 @@ static int loginctl_main(sd_bus *bus, in } int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); --- src/login/pam-module.c +++ src/login/pam-module.c 2014-10-21 10:48:20.000000000 +0000 @@ -213,7 +213,7 @@ _public_ PAM_EXTERN int pam_sm_open_sess *seat = NULL, *type = NULL, *class = NULL, *class_pam = NULL, *type_pam = NULL, *cvtnr = NULL, *desktop = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int session_fd = -1, existing, r; bool debug = false, remote; struct passwd *pw; @@ -517,7 +517,7 @@ _public_ PAM_EXTERN int pam_sm_close_ses int argc, const char **argv) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; const void *existing = NULL; const char *id; int r; --- src/machine/machinectl.c +++ src/machine/machinectl.c 2014-10-21 11:20:45.747838104 +0000 @@ -550,7 +550,7 @@ static int openpt_in_namespace(pid_t pid static int login_machine(sd_bus *bus, char **args, unsigned n) { _cleanup_bus_message_unref_ sd_bus_message *reply = NULL, *reply2 = NULL, *reply3 = NULL; _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_bus_unref_ sd_bus *container_bus = NULL; + _cleanup_bus_close_unref_ sd_bus *container_bus = NULL; _cleanup_close_ int master = -1; _cleanup_free_ char *getty = NULL; const char *path, *pty, *p; @@ -879,7 +879,7 @@ static int machinectl_main(sd_bus *bus, } int main(int argc, char*argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); --- src/nspawn/nspawn.c +++ src/nspawn/nspawn.c 2014-10-21 11:21:05.561523449 +0000 @@ -1163,7 +1163,7 @@ static int drop_capabilities(void) { static int register_machine(pid_t pid) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; if (!arg_register) @@ -1285,7 +1285,7 @@ static int register_machine(pid_t pid) { static int terminate_machine(pid_t pid) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; const char *path; int r; --- src/run/run.c +++ src/run/run.c 2014-10-21 11:22:35.163838021 +0000 @@ -462,7 +462,7 @@ static int start_transient_scope( int main(int argc, char* argv[]) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; _cleanup_free_ char *description = NULL, *command = NULL; int r; --- src/systemctl/systemctl.c +++ src/systemctl/systemctl.c 2014-10-21 11:22:48.516338154 +0000 @@ -6436,7 +6436,7 @@ static int runlevel_main(void) { } int main(int argc, char*argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); --- src/timedate/timedatectl.c +++ src/timedate/timedatectl.c 2014-10-21 11:23:06.107837988 +0000 @@ -593,7 +593,7 @@ static int timedatectl_main(sd_bus *bus, } int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); --- src/timedate/timedated.c +++ src/timedate/timedated.c 2014-10-21 11:23:26.047838675 +0000 @@ -779,7 +779,7 @@ static const sd_bus_vtable timedate_vtab }; static int connect_bus(Context *c, sd_event *event, sd_bus **_bus) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; assert(c); @@ -825,7 +825,7 @@ int main(int argc, char *argv[]) { }; _cleanup_event_unref_ sd_event *event = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; log_set_target(LOG_TARGET_AUTO);