[avahi] Sometimes a Service/Host disappears
Florian Erfurth
f.erfurth at reel-multimedia.com
Fri Sep 4 04:22:50 PDT 2009
Hi,
I've got a problem. I'm using avahi-daemon version 0.6.20-2ubuntu3.3. On
Clients where I wrote my own tool (code based on avahi-browse). I think
there is 2 different problem (not sure if it is *1* problem), i tried
with 'avahi-daemon --debug' on client:
Problem A
Sometimes if host update avahi-service (text is changed) the tool on
client tells me the service is removed and (quickly) readded again:
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/,
member=ServiceResolverNew
dbus-async-service-resolver.c:
interface=org.freedesktop.Avahi.ServiceResolver,
path=/Client0/ServiceResolver43, member=Free
Here the service on host was updated only 1 time but avahi-daemon
printed "Received goodbye..." twice! Then the service is removed
(AVAHI_BROWSER_REMOVE) and readded (AVAHI_BROWSER_NEW) on client. => The
service was not available in short time.
Problem B (Bigger problem which I have to fix :( )
Sometime if a service is "removed" (which is wrong!) it takes long till
this service reappears again.
A service is available in LAN. I tried several time of service update on
host:
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/,
member=ServiceResolverNew
dbus-async-service-resolver.c:
interface=org.freedesktop.Avahi.ServiceResolver,
path=/Client0/ServiceResolver37, member=Free
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/,
member=ServiceResolverNew
dbus-async-service-resolver.c:
interface=org.freedesktop.Avahi.ServiceResolver,
path=/Client0/ServiceResolver38, member=Free
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/,
member=ServiceResolverNew
dbus-async-service-resolver.c:
interface=org.freedesktop.Avahi.ServiceResolver,
path=/Client0/ServiceResolver39, member=Free
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/,
member=ServiceResolverNew
dbus-async-service-resolver.c:
interface=org.freedesktop.Avahi.ServiceResolver,
path=/Client0/ServiceResolver40, member=Free
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/,
member=ServiceResolverNew
dbus-async-service-resolver.c:
interface=org.freedesktop.Avahi.ServiceResolver,
path=/Client0/ServiceResolver41, member=Free
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
Recieved goodbye record for one of our records
[_services._dns-sd._udp.local IN PTR _reelboxMySQL._tcp.local ;
ttl=0]. Refreshing.
dbus-async-service-resolver.c:
interface=org.freedesktop.Avahi.ServiceResolver,
path=/Client0/ServiceResolver22, member=Free
In the last line you see the number is 22 instead of number 42. Which
means Service Resolver #22 came too late. (am I right?) Now my client
thinks the service of host is not available (i got AVAHI_BROWSER_REMOVE)
and it didn't reappear (AVAHI_BROWSER_NEW). It takes long (0.5 - 3mins)
till the client got AVAHI_BROWSER_NEW and the service is available again.
Whats wrong here? Why did it happen? And why die ServiceResolver22 came
too late?
My thought: Maybe avahi-daemon miss a check if the
ServiceResolver-counter running in right order. If not then avahi-daemon
should "catch" it. I'm not sure if there is a bug in avahi-daemon since
I'm not really a avahi-dev.
cu Floh
PS: Hope you can read my "English", if not let me know please.
More information about the avahi
mailing list