From 9814fe1ec9428865007d71c3159af52bf62ce05a Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 16 Nov 2013 00:20:26 +0100 Subject: [PATCH 1/5] zeroconf: Fix logger name --- mopidy/utils/zeroconf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mopidy/utils/zeroconf.py b/mopidy/utils/zeroconf.py index c1781867..56fd3c07 100644 --- a/mopidy/utils/zeroconf.py +++ b/mopidy/utils/zeroconf.py @@ -5,7 +5,7 @@ import re import socket import string -logger = logging.getLogger('mopidy.utils.zerconf') +logger = logging.getLogger('mopidy.utils.zeroconf') try: import dbus From f3b09e4ef2cf713cfc00c9f1fd0ab129fa9c6b83 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 16 Nov 2013 00:20:49 +0100 Subject: [PATCH 2/5] zeroconf: Catch DBusException from AddService Fixes #576 --- mopidy/utils/zeroconf.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mopidy/utils/zeroconf.py b/mopidy/utils/zeroconf.py index 56fd3c07..a85fddbe 100644 --- a/mopidy/utils/zeroconf.py +++ b/mopidy/utils/zeroconf.py @@ -66,11 +66,15 @@ class Zeroconf(object): bus.get_object('org.freedesktop.Avahi', server.EntryGroupNew()), 'org.freedesktop.Avahi.EntryGroup') - text = [_convert_text_to_dbus_bytes(t) for t in self.text] - self.group.AddService(_AVAHI_IF_UNSPEC, _AVAHI_PROTO_UNSPEC, - dbus.UInt32(_AVAHI_PUBLISHFLAGS_NONE), - self.name, self.stype, self.domain, self.host, - dbus.UInt16(self.port), text) + try: + text = [_convert_text_to_dbus_bytes(t) for t in self.text] + self.group.AddService( + _AVAHI_IF_UNSPEC, _AVAHI_PROTO_UNSPEC, + dbus.UInt32(_AVAHI_PUBLISHFLAGS_NONE), self.name, self.stype, + self.domain, self.host, dbus.UInt16(self.port), text) + except dbus.exceptions.DBusException as e: + logger.debug('Zeroconf publish failed: %s', e) + return False self.group.Commit() return True From 5c33115eebc9002cc480ec8f47293a2bd181dce0 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 16 Nov 2013 00:55:18 +0100 Subject: [PATCH 3/5] zeroconf: Don't set host when binding to all interfaces --- mopidy/utils/zeroconf.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/mopidy/utils/zeroconf.py b/mopidy/utils/zeroconf.py index a85fddbe..6b43e62e 100644 --- a/mopidy/utils/zeroconf.py +++ b/mopidy/utils/zeroconf.py @@ -1,7 +1,6 @@ from __future__ import unicode_literals import logging -import re import socket import string @@ -17,13 +16,6 @@ _AVAHI_PROTO_UNSPEC = -1 _AVAHI_PUBLISHFLAGS_NONE = 0 -def _filter_loopback_and_meta_addresses(host): - # TODO: see if we can find a cleaner way of handling this. - if re.search(r'(? Date: Sat, 16 Nov 2013 01:28:44 +0100 Subject: [PATCH 4/5] zeroconf: Wrap publish in try-except --- mopidy/utils/zeroconf.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mopidy/utils/zeroconf.py b/mopidy/utils/zeroconf.py index 6b43e62e..36d38f8b 100644 --- a/mopidy/utils/zeroconf.py +++ b/mopidy/utils/zeroconf.py @@ -46,34 +46,33 @@ class Zeroconf(object): try: bus = dbus.SystemBus() - except dbus.exceptions.DBusException as e: - logger.debug('Zeroconf publish failed: %s', e) - return False - if not bus.name_has_owner('org.freedesktop.Avahi'): - logger.debug('Zeroconf publish failed: Avahi service not running.') - return False + if not bus.name_has_owner('org.freedesktop.Avahi'): + logger.debug( + 'Zeroconf publish failed: Avahi service not running.') + return False - server = dbus.Interface(bus.get_object('org.freedesktop.Avahi', '/'), - 'org.freedesktop.Avahi.Server') + server = dbus.Interface( + bus.get_object('org.freedesktop.Avahi', '/'), + 'org.freedesktop.Avahi.Server') - self.group = dbus.Interface( - bus.get_object('org.freedesktop.Avahi', server.EntryGroupNew()), - 'org.freedesktop.Avahi.EntryGroup') + self.group = dbus.Interface( + bus.get_object( + 'org.freedesktop.Avahi', server.EntryGroupNew()), + 'org.freedesktop.Avahi.EntryGroup') - try: text = [_convert_text_to_dbus_bytes(t) for t in self.text] self.group.AddService( _AVAHI_IF_UNSPEC, _AVAHI_PROTO_UNSPEC, dbus.UInt32(_AVAHI_PUBLISHFLAGS_NONE), self.name, self.stype, self.domain, self.host, dbus.UInt16(self.port), text) + + self.group.Commit() + return True except dbus.exceptions.DBusException as e: logger.debug('Zeroconf publish failed: %s', e) return False - self.group.Commit() - return True - def unpublish(self): if self.group: self.group.Reset() From eee276d8c0a412eff659465fd33ca7ab549d5da4 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 16 Nov 2013 01:28:53 +0100 Subject: [PATCH 5/5] zeroconf: Wrap unpublish in try-except --- mopidy/utils/zeroconf.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mopidy/utils/zeroconf.py b/mopidy/utils/zeroconf.py index 36d38f8b..33fbd13b 100644 --- a/mopidy/utils/zeroconf.py +++ b/mopidy/utils/zeroconf.py @@ -75,5 +75,9 @@ class Zeroconf(object): def unpublish(self): if self.group: - self.group.Reset() - self.group = None + try: + self.group.Reset() + except dbus.exceptions.DBusException as e: + logger.debug('Zeroconf unpublish failed: %s', e) + finally: + self.group = None