Tracking whether a connection is alive

David Zeuthen david at
Sun Jul 11 15:31:27 PDT 2004

On Sun, 2004-07-11 at 23:26 +0100, Daniel Silverstone wrote:
> David Zeuthen wrote:
> > Is there any easier or more general way to do this? Can the problem be
> > solved in a general way that may be useful for other applications of D-
> > BUS?
> When you process the AcquireLock() method... obtain the base service of the 
> caller using dbus_message_get_sender().
> Add a matcher to your connection similar to:
>    dbus_bus_add_match( connection, 
> "interface='org.freedesktop.DBus',member='ServiceDeleted'", NULL );
> Then, in your filter function...
>    if( dbus_message_is_signal( message,
>                                "org.freedesktop.DBus",
>                                "ServiceDeleted" ) ) {
>     /* code to forcibly release the lock*/
> }
> I hope that helps.

This definitely seems like the way it should be done.

But I don't see this covering the case where the app getting the lock,
locks up. Unless the system message bus actively pings said app on a
regular schedule and then deletes the service if it doesn't respond.
Which is kind of ugly. Which is why I may have to do that in HAL instead
of relying on D-BUS to do it for me.


More information about the dbus mailing list