1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-28 20:25:25 +03:00

bus-proxy: fix NameAcquired and NameLost to be directed

The NameAcquired and NameLost signals are _directed_ signals. Make sure
we properly set the destination correctly, and verify it in our
proxy-test.
This commit is contained in:
David Herrmann 2015-07-31 11:12:52 +02:00
parent 6189e043d4
commit e3c57a86f6
3 changed files with 21 additions and 4 deletions

View File

@ -644,6 +644,10 @@ static int process_hello(Proxy *p, sd_bus_message *m) {
if (r < 0)
return log_error_errno(r, "Failed to append sender to NameAcquired message: %m");
r = sd_bus_message_set_destination(n, p->destination_bus->unique_name);
if (r < 0)
return log_error_errno(r, "Failed to set destination for NameAcquired message: %m");
r = bus_seal_synthetic_message(p->local_bus, n);
if (r < 0)
return log_error_errno(r, "Failed to seal NameAcquired message: %m");

View File

@ -214,6 +214,10 @@ int synthesize_name_acquired(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m)
if (r < 0)
return r;
r = sd_bus_message_set_destination(n, a->unique_name);
if (r < 0)
return r;
r = bus_seal_synthetic_message(b, n);
if (r < 0)
return r;

View File

@ -53,7 +53,9 @@ static int test_proxy_acquired(sd_bus_message *m, void *userdata, sd_bus_error *
static void test_proxy_matched(void) {
_cleanup_bus_flush_close_unref_ sd_bus *a = NULL;
_cleanup_free_ char *matchstr = NULL;
TestProxyMatch match = {};
const char *me;
int r;
/* open bus 'a' */
@ -70,10 +72,17 @@ static void test_proxy_matched(void) {
r = sd_bus_start(a);
assert_se(r >= 0);
r = sd_bus_add_match(a, NULL,
"type='signal',"
"member='NameAcquired'",
test_proxy_acquired, &match);
r = sd_bus_get_unique_name(a, &me);
assert_se(r >= 0);
matchstr = strjoin("type='signal',"
"member='NameAcquired',"
"destination='",
me,
"'",
NULL);
assert_se(matchstr);
r = sd_bus_add_match(a, NULL, matchstr, test_proxy_acquired, &match);
assert_se(r >= 0);
r = sd_bus_get_unique_name(a, &match.sender);