diff options
author | Tom Gundersen <teg@jklm.no> | 2016-01-20 11:30:20 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2016-01-20 11:30:20 +0100 |
commit | f7e29f72bf5a440737bdf8a1fc81053b5f44cb64 (patch) | |
tree | 333c2532daa887e206aec8947c9927be0900c75e /src/network | |
parent | d619a0c4a5bf4f9d5796bcac77160a14e4e24cb6 (diff) | |
parent | c69fa7e3c44240bedc0ee1bd89fecf954783ac85 (diff) |
Merge pull request #2372 from poettering/dnssec17
resolved bus API improvements
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/networkd-link-bus.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/network/networkd-link-bus.c b/src/network/networkd-link-bus.c index d09a3c2d07..4d6ac747fd 100644 --- a/src/network/networkd-link-bus.c +++ b/src/network/networkd-link-bus.c @@ -59,15 +59,19 @@ static char *link_bus_path(Link *link) { int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error) { _cleanup_strv_free_ char **l = NULL; Manager *m = userdata; + unsigned c = 0; Link *link; Iterator i; - int r; assert(bus); assert(path); assert(m); assert(nodes); + l = new0(char*, hashmap_size(m->links) + 1); + if (!l) + return -ENOMEM; + HASHMAP_FOREACH(link, m->links, i) { char *p; @@ -75,11 +79,10 @@ int link_node_enumerator(sd_bus *bus, const char *path, void *userdata, char *** if (!p) return -ENOMEM; - r = strv_consume(&l, p); - if (r < 0) - return r; + l[c++] = p; } + l[c] = NULL; *nodes = l; l = NULL; @@ -99,7 +102,7 @@ int link_object_find(sd_bus *bus, const char *path, const char *interface, void assert(found); r = sd_bus_path_decode(path, "/org/freedesktop/network1/link", &identifier); - if (r < 0) + if (r <= 0) return 0; r = parse_ifindex(identifier, &ifindex); |