[systemd-devel] [PATCH] names: Acquiring name by activator connection logic fixed
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(reg-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
Re: [systemd-devel] [PATCH] names: Acquiring name by activator connection logic fixed
On 02/20/2014 12:33 PM, Michal Eljasiewicz wrote: 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 Makes sense. Applied, thanks! Daniel --- 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(reg-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; } ___ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel