This fix allows to register activator connection when normal connection already exists for that name. Also, when activator connection registers for a second name (different than first one) name lookup will result in no entry found and checking for multiple names will not occur. So checking needs to be done earlier.
Signed-off-by: Michal Eljasiewicz <m.eljasie...@samsung.com> --- names.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/names.c b/names.c index c43960a..22ead9f 100644 --- a/names.c +++ b/names.c @@ -399,6 +399,13 @@ int kdbus_name_acquire(struct kdbus_name_registry *reg, mutex_lock(&conn->bus->lock); mutex_lock(®->entries_lock); + + /* an activator can only own a single name */ + if ((conn->flags & KDBUS_HELLO_ACTIVATOR) && conn->names > 0) { + ret = -EALREADY; + goto exit_unlock; + } + e = __kdbus_name_lookup(reg, hash, name); if (e) { /* connection already owns that name */ @@ -407,9 +414,10 @@ int kdbus_name_acquire(struct kdbus_name_registry *reg, goto exit_unlock; } - /* an activator can only own a single name */ - if (conn->flags & KDBUS_HELLO_ACTIVATOR) { - ret = -EALREADY; + /* activator registers for name that is already owned */ + if (conn->flags & KDBUS_HELLO_ACTIVATOR && + e->activator == NULL) { + e->activator = kdbus_conn_ref(conn); goto exit_unlock; } -- 1.8.1.2 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel