On Fri, 2013-05-17 at 16:49 +0300, Tanu Kaskinen wrote: > On Wed, 2013-05-15 at 18:58 +0530, Arun Raghavan wrote: > > On Wed, 2013-05-15 at 14:06 +0300, Tanu Kaskinen wrote: > > > On Wed, 2013-05-15 at 16:02 +0530, Arun Raghavan wrote: > > > > On Wed, 2013-05-15 at 13:05 +0300, Tanu Kaskinen wrote: > > > > > On Wed, 2013-05-15 at 10:13 +0530, Arun Raghavan wrote: > > > > However, > > > > I don't see the timeout take this long every time. I'm trying to find > > > > out why this is. > > > > Okay, so I know the source of the problem now. avahi_client_new() runs a > > Ping() on the Avahi D-Bus service, expecting that to cause it to > > autospawn if it isn't running. Avahi autospawn is currently broken due > > to it's activation file not having a User=? line. > > > > The D-Bus activation logic marks an activation pending, then tries to > > activate, fails because of this, and immediately returns. If the same > > call is made again soon thereafter, it will block (since it thinks there > > is an activation pending) until the pending activation times out (25s > > from when the first activation was triggered). > > > > So that explains all the weird behaviour there. > > So is this also a D-Bus bug (in addition to being a configuration > mistake)? Shouldn't the activation be cleared immediately after it has > failed, so that subsequent pings don't end up waiting? Have you made a > fix for D-Bus, or have you reported a bug? If not, I might do one of > those. Not yet. I was going to try to hack up a fix, or failing that, file a bug, but I'm happy to let you do it. ;) The relevant code is: http://cgit.freedesktop.org/dbus/dbus/tree/bus/activation.c#n2008 -- Arun