Re: How does dbus-daemon handle multiple services with same Name?
Michael Biebl <[email protected]>
| Newsgroups | gmane.comp.freedesktop.dbus |
|---|---|
| Message-ID | <CAGWsdOjk2LRqBci7fJYaecNmQAAFzjDYvz9RHsCbHBaUZBWd7Q@mail.gmail.com> |
2015-06-21 20:58 GMT+02:00 Armin K. <[email protected]>: > On 06/21/2015 08:42 PM, Lennart Poettering wrote: >> On Sun, 21.06.15 13:02, Armin K. ([email protected]) wrote: >> >>> Hi, >>> >>> While trying kdbus with systemd, I have ran across a problem. >>> Apparently it doesn't yet properly handle multiple D-Bus services >>> with same name. >>> >>> I'm interested in how does D-Bus daemon handle this? Which one >>> gets loaded and how it decides which one to load? >>> >>> An example: >>> >>> I have two services with Name=org.freedesktop.FileManager1 >>> >>> One is GNOME's Nautilus, other is MATE's Caja File Manager. >>> Which one would get loaded and why? >> >> Only one service can own a name at a time. If one already owns a name, >> and another one tries to take possession of it as well, then one of >> three things can happen: >> >> a) the request to own the name is queued, and dbus-daemon passes >> it on automatically and atomically as soon as the old owner >> voluntarily gives it up. >> >> b) the operation to request the name will simply fail (this mode >> of operation you get by passing DBUS_NAME_FLAG_DO_NOT_QUEUE when >> acquiring the name) >> >> c) the name will be taken away forcible from the old owner (only >> if the new owner indicated DBUS_NAME_FLAG_REPLACE_EXISTING, and >> the old one DBUS_NAME_FLAG_ALLOW_REPLACEMENT). >> >> Either way, and no times there are two owners of a name at the same >> time, neither in kdbus, nor in dbus-daemon. >> >> Lennart >> > > I'm asking specifically because current dbus-daemon seems to > kinda handle it, but kdbus will error out when it tries to > create a symlink for bus-proxyd. I was asked on systemd > bug tracker how dbus handles this, that's why I asked here. What you are referring to is having files in /usr/share/dbus-1/{system}-services/ which provide the same "Name". It's not enforced, that the Name in the .service file is named after the D-Bus name. So you can have foo.service with Name=org.fdo.baz and bar.service with Name=org.fdo.baz I think your question is, assuming that neither foo or bar is running, and there is an incoming request for org.fdo.baz, which one of the two is started? -- Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth? _______________________________________________ dbus mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/dbus