<br><br><div class="gmail_quote">2009/11/5 Trent Lloyd <span dir="ltr"><<a href="mailto:lathiat@bur.st">lathiat@bur.st</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Jose,<br>
<div><div></div><div class="h5"><br>
On 05/11/2009, at 6:35 AM, José Félix Ontañón wrote:<br>
<br>
> Hi everyone!<br>
><br>
> I'm a newbie playing with python-avahi trying to code some kind of<br>
> master-slave application for shutdown every machine at same time.<br>
> When the master it's ordered to shutdown, it sends the signal to the<br>
> slaves. The slaves publish/unpublish the service via avahi, and the<br>
> master<br>
> discover them via ItemNew/ItemRemove signals. Very strait-forward,<br>
> isn't?<br>
><br>
> The avahi publish/unpublish/discover services it's gorgeous but i've<br>
> found that if a slave, that has published the service via avahi,<br>
> losts it<br>
> network (i.e. the wifi ap goes out of power), the master still<br>
> discovering it! and no ItemRemove signal it's raised at all. Is it<br>
> normal? Am i doing something wrong?<br>
><br>
> To solve it, i've implemented some kind of "ping" to the slaves<br>
> service every Xseconds. When a new slave it's discovered, the<br>
> periodic ping starts.<br>
> When ping it's failing i know there be some problem with networking.<br>
><br>
> I wonder if avahi itself provides a native workaround to avoid the<br>
> coding of those nasty "ping" cycles ...<br>
<br>
</div></div>This is normal.. it will disappear after some time.<br>
<br>
The instant removal of an advertised service relies on the host<br>
sending a "gone away" message (more specifically, it updates the TTL<br>
of its record to expire in I think.. 1 second)<br>
<br>
This is because mDNS uses caching.. if it didn't use caching it would<br>
cause alot more network traffic and would hammer especially wireless<br>
networks.<br>
<br>
<br>
<br>
Having not really worked with it for a while.. I can't remember all<br>
the details but I suspect you can change the TTL in the Avahi API call<br>
to make these timeouts happen a little quicker, but you will increase<br>
network traffic by doing so.<br>
<br>
Really your application should not rely on Avahi for "service<br>
undiscovery".. it's meant generally for "unreliable service<br>
discovery". You are best of actually having some protocol between the<br>
master and slave and just using avahi for the slave to find the master<br>
in the first instance.<br>
<br>
Regards,<br>
Trent<br>
_______________________________________________<br>
avahi mailing list<br>
<a href="mailto:avahi@lists.freedesktop.org">avahi@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/avahi" target="_blank">http://lists.freedesktop.org/mailman/listinfo/avahi</a><br>
</blockquote></div><br><br>Ok, in this case i'll continue with my ping aproximation. It works fairly well.<br><br>Thanks Trent.<br clear="all"><br>-- <br><a href="http://nosigasleyendo.blogspot.com">http://nosigasleyendo.blogspot.com</a><br>