chiark / gitweb /
bus: various improvements for test-bus-chat
[elogind.git] / src / libsystemd-bus / test-bus-chat.c
index 868a5b14089a87ebcdc922544450d89af74ae937..533d78cc3b937c5a4b42b3d2ee10251ddbf6bd9c 100644 (file)
@@ -206,14 +206,14 @@ static int server(sd_bus *bus) {
                         client2_gone = true;
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Slow")) {
 
                         client2_gone = true;
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Slow")) {
 
+                        sleep(1);
+
                         r = sd_bus_reply_method_return(bus, m, NULL);
                         if (r < 0) {
                                 log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
 
                         r = sd_bus_reply_method_return(bus, m, NULL);
                         if (r < 0) {
                                 log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
 
-                        sleep(1);
-
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "FileDescriptor")) {
                         int fd;
                         static const char x = 'X';
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "FileDescriptor")) {
                         int fd;
                         static const char x = 'X';
@@ -305,31 +305,18 @@ static void* client1(void*p) {
                 goto finish;
         }
 
                 goto finish;
         }
 
-        sd_bus_message_unref(m);
-        m = NULL;
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.systemd.test",
                         "/",
                         "org.freedesktop.systemd.test",
                         "FileDescriptor",
                         bus,
                         "org.freedesktop.systemd.test",
                         "/",
                         "org.freedesktop.systemd.test",
                         "FileDescriptor",
-                        &m);
-        if (r < 0) {
-                log_error("Failed to allocate method call: %s", strerror(-r));
-                goto finish;
-        }
-
-        r = sd_bus_message_append(m, "h", pp[1]);
-        if (r < 0) {
-                log_error("Failed to append string: %s", strerror(-r));
-                goto finish;
-        }
-
-        sd_bus_message_unref(reply);
-        reply = NULL;
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, &error, &reply);
+                        &error,
+                        NULL,
+                        "h",
+                        pp[1]);
         if (r < 0) {
         if (r < 0) {
-                log_error("Failed to issue method call: %s", bus_error_message(&error, -r));
+                log_error("Failed to issue method call: %s", strerror(-r));
                 goto finish;
         }
 
                 goto finish;
         }
 
@@ -352,12 +339,11 @@ finish:
                                 "org.freedesktop.systemd.test",
                                 "ExitClient1",
                                 &q);
                                 "org.freedesktop.systemd.test",
                                 "ExitClient1",
                                 &q);
-                if (r < 0) {
+                if (r < 0)
                         log_error("Failed to allocate method call: %s", strerror(-r));
                         log_error("Failed to allocate method call: %s", strerror(-r));
-                        goto finish;
-                }
+                else
+                        sd_bus_send(bus, q, NULL);
 
 
-                sd_bus_send(bus, q, NULL);
                 sd_bus_flush(bus);
                 sd_bus_unref(bus);
         }
                 sd_bus_flush(bus);
                 sd_bus_unref(bus);
         }