summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-05-21 13:18:18 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2007-05-21 13:18:18 +0100
commit03bcbff71d4bf112441dfd53300328c70d3a512c (patch)
treed8d093a341765c14af74c3890106edb83e4d3ced
parent09e138af65710b11363e0852711171c3a9f8ef00 (diff)
downloaddbus-python-03bcbff71d4bf112441dfd53300328c70d3a512c.tar.gz
dbus.bus: detect NameHasNoOwner correctly, using new get_dbus_name() method
-rw-r--r--dbus/bus.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/dbus/bus.py b/dbus/bus.py
index 645f6a8..9313289 100644
--- a/dbus/bus.py
+++ b/dbus/bus.py
@@ -42,6 +42,8 @@ _NAME_OWNER_CHANGE_MATCH = ("type='signal',sender='%s',"
"""(_NAME_OWNER_CHANGE_MATCH % sender) matches relevant NameOwnerChange
messages"""
+_NAME_HAS_NO_OWNER = 'org.freedesktop.DBus.Error.NameHasNoOwner'
+
_logger = logging.getLogger('dbus.bus')
@@ -55,8 +57,7 @@ class NameOwnerWatch(object):
callback(new_owner)
def error_cb(e):
- # FIXME: detect whether it's NameHasNoOwner properly
- if str(e).startswith('org.freedesktop.DBus.Error.NameHasNoOwner:'):
+ if e.get_dbus_name() == _NAME_HAS_NO_OWNER:
callback('')
else:
logging.basicConfig()
@@ -158,10 +159,9 @@ class BusConnection(Connection):
try:
return self.get_name_owner(bus_name)
except DBusException, e:
- # FIXME: detect whether it's NameHasNoOwner, but properly
- #if not str(e).startswith('org.freedesktop.DBus.Error.NameHasNoOwner:'):
- # raise
- # it might not exist: try to start it
+ if e.get_dbus_name() != _NAME_HAS_NO_OWNER:
+ raise
+ # else it doesn't exist: try to start it
self.start_service_by_name(bus_name)
return self.get_name_owner(bus_name)
else: