The DNS-SD code in GNOME-VFS appears to be 'special'. I was going to replace it with Avahi, but it seems like such an attempt could send me insane. Instead I have started working on a GServiceBrowser GObject that is designed to wrap Avahi in a mostly opaque API.
This is how easy I want using this object to be:
idiot proof Rendezvous browsing.
And it almost pretty much works:
[davyd@floyd avahi-object]$ ./dnssd-test
::class-init
::client-callback
** Message: Avahi client is running
::init
Adding type: "_http._tcp"
Adding type: "_workstation._tcp"
::browse-callback
Got signal service-added
name: Cugglephone
type: _http._tcp
domain: local
::browse-callback
Got signal service-added
name: floyd [00:13:d3:05:3b:e2]
type: _workstation._tcp
domain: local
10 seconds!!
Removing type: "_workstation._tcp"
[davyd@floyd avahi-object]$