1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-05 06:52:22 +03:00

bus: various improvements for test-bus-chat

This commit is contained in:
Lennart Poettering 2013-04-05 14:55:28 +02:00
parent d4100e2444
commit b7f247e0be
2 changed files with 17 additions and 26 deletions

View File

@ -1314,7 +1314,12 @@ int sd_bus_send_with_reply_and_block(
/* Found a match! */
if (incoming->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN) {
*reply = incoming;
if (reply)
*reply = incoming;
else
sd_bus_message_unref(incoming);
return 0;
}

View 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")) {
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;
}
sleep(1);
} 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;
}
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",
&m);
&error,
NULL,
"h",
pp[1]);
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);
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;
}
@ -352,12 +339,11 @@ finish:
"org.freedesktop.systemd.test",
"ExitClient1",
&q);
if (r < 0) {
if (r < 0)
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);
}