Subject: bug#9581: 24.0.50; dbus-unregister-object fails if service is nil

From: Julien Danjou <[email-masked]>
Date: Fri, 23 Sep 2011 18:12:04 +0200

On Fri, Sep 23 2011, Michael Albinus wrote:

>> While I agree on point 1., the point 2. is totally irrelevant in such a
>> case. There's no need to do such a thing, the name has never been
>> requested with RequestName before.
>
> It's simply an error. We are speaking abut the generalized
> `dbus-unregister-object', which is used for both signals and
> methods. ReleaseName shall be called only in case a *method* has been
> registered; I'll fix this.
>
>> I think that:
>> - step 2 should be removed or another function should be created which
>>   does not send a ReleaseName
>
> Nope. See above.

Ok, if you do this in one function, I agree with you then.

>> - dbus_bus_remove_match() should be used to remove the watch from the
>>   bus, which would be a lot cleaner.
>
> Good point. Registering a signal shall also keep the match string in
> dbus-registered-objects-table (it doesn't yet). Then we could use this
> string to send RemoveMatch.
>
> I'll prepare a patch for this (hopefully in time before starting the
> pretest).

It sounds like a solution. What I don't like is that it's not really
opaque, so somebody could mess with this, but well… I might be paranoid. :)

-- 
Julien Danjou