I think I have found a problem with avahi-daemon.
There are several ways to reproduce but I will describe what I think is the simplest way.
On both the desktop and laptop full gnome desktop loaded with service-discovery-applet in the panel. Lots of services are listed, we'll take itunes / daap share as an example. My rhythmbox on the laptop is sharing my music and my desktop rhythmbox can connect and play easily.
Yank out the network cable from the laptop. Services disappear as they should from both sides.
Replug the network cable. Services don't get discovered again. Closing and running rhythmbox still won't publish the itunes/daap share.
To fix the state of the services, I have to either restart avahi-daemon using the init script ( which kills some services like seahorse-daemon key publishing ) or run avahi-discover-standalone ( which has some funny effects like duplicated services.
The same state is reached if avahi-daemon is started before the network interface is ready ( address acquired ).
I think avahi-daemon should be aware of network interface states. This can be achieved by polling or something. Another way is to listen on the dbus for NetworkManager? messages ( if it is available ). but don't take my word for it i am just a beginner.
I am using avahi-0.6.15 on latest gentoo.
Please request any extra information if you need it.
Thanks.