diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-07-30 01:13:56 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-07-30 01:13:56 +0000 |
commit | 48cfb3c876636d79dace3ebc8e82c946bc0b7ebf (patch) | |
tree | 484d9e332faa80fc75cb8364a20de231d0d0fd8a /avahi-utils/avahi-publish-service | |
parent | 38b45921cd1d33119f1c06979a57bcfe982e22da (diff) |
* add new tool avahi-publish-address
* avahi-publish-service: fail after 12 collisions
* avahi-daemon: dump record data on SIGUSR1 to syslog
* avahi-core:
* improve dumping API
* shorten response history time to 500ms, infriniging the RFC but fixing ping-pong behaviour on RR registration
* remove gcc warning
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@195 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-utils/avahi-publish-service')
-rwxr-xr-x | avahi-utils/avahi-publish-service | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/avahi-utils/avahi-publish-service b/avahi-utils/avahi-publish-service index 4375d1a..376df34 100755 --- a/avahi-utils/avahi-publish-service +++ b/avahi-utils/avahi-publish-service @@ -48,6 +48,7 @@ if len(txt) == 0: txt.append("python-dbus=brain-damage") group = None +n_rename = 0 def remove_service(): global group @@ -57,27 +58,31 @@ def remove_service(): group = None def add_service(): - global group, name, stype, domain, host, port, txt - + global server, group, name, stype, domain, host, port, txt assert group is None - print "Adding service '%s' of type '%s' ..." % (name, args[1]) - + print "Adding service '%s' of type '%s' ..." % (name, stype) group = dbus.Interface(bus.get_object("org.freedesktop.Avahi", server.EntryGroupNew()), 'org.freedesktop.Avahi.EntryGroup') group.connect_to_signal('StateChanged', entry_group_state_changed) group.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, name, stype, domain, host, dbus.UInt16(port), txt) group.Commit() def entry_group_state_changed(state): - global name, server + global name, server, n_rename if state == avahi.ENTRY_GROUP_ESTABLISHED: print "Service established." elif state == avahi.ENTRY_GROUP_COLLISION: - name = server.GetAlternativeServiceName(name) - print "WARNING: Service name collision, changing name to '%s' ..." % name - remove_service() - add_service() + + n_rename = n_rename + 1 + if n_rename >= 12: + print "ERROR: No suitable service name found after %i retries, exiting." % n_rename + main_loop.quit() + else: + name = server.GetAlternativeServiceName(name) + print "WARNING: Service name collision, changing name to '%s' ..." % name + remove_service() + add_service() def server_state_changed(state): if state == avahi.SERVER_COLLISION: @@ -86,13 +91,15 @@ def server_state_changed(state): elif state == avahi.SERVER_RUNNING: add_service() +main_loop = gobject.MainLoop() + bus = dbus.SystemBus() server = dbus.Interface(bus.get_object("org.freedesktop.Avahi", '/org/freedesktop/Avahi/Server'), 'org.freedesktop.Avahi.Server') server.connect_to_signal("StateChanged", server_state_changed) server_state_changed(server.GetState()) try: - gobject.MainLoop().run() + main_loop.run() except KeyboardInterrupt, k: pass |