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

Reply via email to