> On 02/24/2014 10:17 AM, Daniel Mack wrote:
> > If e->activator wasn't released when activator connection has
> disconnected,
> > there was no possibility to open new activator connection for that
> name
> > in the case when there was another owner of that name.
> 
> Interesting. Like in the last patch you sent, you seem to have
> situations where the activator comes and goes just like a normal
> connection. Which should be handled fine by kdbus, it's just different
> from our use case.

In our project it is possible that config files for activator connections may 
change so activator connections may disappear or appear again.
 
> > @@ -255,6 +255,8 @@ void kdbus_name_remove_by_conn(struct
> > kdbus_name_registry *reg,
> >             kdbus_name_queue_item_free(q);
> >     list_for_each_entry_safe(e, e_tmp, &names_list, conn_entry)
> >             kdbus_name_entry_release(e, &notify_list);
> > +   if (conn->flags & KDBUS_HELLO_ACTIVATOR)
> > +           conn->activator_of->activator = kdbus_conn_unref(conn);
> >     mutex_unlock(&reg->entries_lock);
> >     mutex_unlock(&conn->bus->lock);
> 
> Hmm, we have the information if the connection that is disconnecting is
> the activator of a name entry. So why don't just use that as condition
> instead of introducing yet another level of indirection?
> 
> IOW, does the following patch work for you as well? I might overlook
> something, and I didn't build any test case yet, however.
> 
> Daniel

Your patch works if the activator connection is still the owner of the name, 
but it doesn't work if activator has lost the ownership. If regular connection 
takes over the name than kdbus_name_replace_owner calls 
kdbus_name_entry_remove_owner which removes e->conn_entry from the names list 
of the activator connection, which you wanted to use. If activator connection 
has closed than, there is stil e->activator pointer to this non existing 
connection which is bug by itself and new activator connection cannot acquire 
that name. Without our patch there is no link between the activator connection 
and name_entry.

Best Regards,
Radoslaw Pajak


_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to