chiark / gitweb /
dbus: make sure to flush bus connection before disconnecting, so that no messages...
[elogind.git] / src / systemctl.c
index 901804a766d1197f3d98543f3606818cc16d2827..ecf3e013f2add664fcb4848d6a8904a8ee28a785 100644 (file)
@@ -2928,7 +2928,7 @@ static int daemon_reload(DBusConnection *bus, char **args, unsigned n) {
                 if (arg_action != ACTION_SYSTEMCTL && error_is_no_service(&error)) {
                         /* There's always a fallback possible for
                          * legacy actions. */
-                        r = 0;
+                        r = -EADDRNOTAVAIL;
                         goto finish;
                 }
 
@@ -2937,7 +2937,7 @@ static int daemon_reload(DBusConnection *bus, char **args, unsigned n) {
                 goto finish;
         }
 
-        r = 1;
+        r = 0;
 
 finish:
         if (m)
@@ -4605,7 +4605,7 @@ static int talk_upstart(void) {
         if (!(reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error))) {
 
                 if (error_is_no_service(&error)) {
-                        r = 0;
+                        r = -EADDRNOTAVAIL;
                         goto finish;
                 }
 
@@ -4614,7 +4614,7 @@ static int talk_upstart(void) {
                 goto finish;
         }
 
-        r = 1;
+        r = 0;
 
 finish:
         if (m)
@@ -4624,6 +4624,7 @@ finish:
                 dbus_message_unref(reply);
 
         if (bus) {
+                dbus_connection_flush(bus);
                 dbus_connection_close(bus);
                 dbus_connection_unref(bus);
         }
@@ -5039,6 +5040,7 @@ int main(int argc, char*argv[]) {
 finish:
 
         if (bus) {
+                dbus_connection_flush(bus);
                 dbus_connection_close(bus);
                 dbus_connection_unref(bus);
         }