Ticket #1401: 0001-fail-gracefully-if-system-DBus-unreachable-1401.patch

File 0001-fail-gracefully-if-system-DBus-unreachable-1401.patch, 2.9 KB (added by sascha_silbe, 15 years ago)

fail gracefully if system DBus unreachable

  • src/linklocal_plugin.py

    From d35710c43b5e9a2254a28114cb4fdc1f9912863d Mon Sep 17 00:00:00 2001
    From: Sascha Silbe <sascha@silbe.org>
    Date: Sun, 20 Sep 2009 20:56:41 +0200
    Subject: [PATCH] fail gracefully if system DBus unreachable (#1401)
    
    ---
     src/linklocal_plugin.py |   17 ++++++++++++-----
     src/psutils.py          |   20 ++++++++++++++++----
     2 files changed, 28 insertions(+), 9 deletions(-)
    
    diff --git a/src/linklocal_plugin.py b/src/linklocal_plugin.py
    index eb44ca5..e06b9c9 100644
    a b from itertools import izip 
    2222
    2323# Other libraries
    2424import gobject
    25 from dbus import SystemBus
     25from dbus import DBusException, SystemBus
    2626from telepathy.client import Connection
    2727from telepathy.interfaces import CONN_INTERFACE
    2828from telepathy.constants import HANDLE_TYPE_CONTACT
    class LinkLocalPlugin(TelepathyPlugin): 
    5353    def __init__(self, registry, owner):
    5454        TelepathyPlugin.__init__(self, registry, owner)
    5555
    56         self._sys_bus = SystemBus()
    5756        self._have_avahi = False
    58         self._watch = self._sys_bus.watch_name_owner('org.freedesktop.Avahi',
    59                                                      self._avahi_owner_cb)
    60 
     57        self._watch = None
     58        self._find_avahi()
    6159        # Glib source ID indicating we have to wait before be allowed to try
    6260        # to connect
    6361        self._have_to_wait_id = 0
    6462
     63    def _find_avahi(self):
     64        try:
     65            sys_bus = SystemBus()
     66            self._watch = sys_bus.watch_name_owner('org.freedesktop.Avahi',
     67                self._avahi_owner_cb)
     68
     69        except DBusException, err:
     70            _logger.exception('Error connecting to Avahi: %s', err)
     71
    6572    def _avahi_owner_cb(self, unique_name):
    6673        had_avahi = self._have_avahi
    6774
  • src/psutils.py

    diff --git a/src/psutils.py b/src/psutils.py
    index feabefe..9248622 100644
    a b class IP4AddressMonitor(gobject.GObject): 
    159159        self._matches = []
    160160        self._addr = None
    161161        self._nm_iface = None
    162         self._sys_bus = dbus.SystemBus()
    163         self._watch = self._sys_bus.watch_name_owner(_NM_SERVICE,
    164                                                      self._nm_owner_cb)
    165         if not self._sys_bus.name_has_owner(_NM_SERVICE):
     162        self._sys_bus = None
     163        self._watch = None
     164        self._find_network_manager()
     165
     166    def _find_network_manager(self):
     167        found = False
     168        try:
     169            self._sys_bus = dbus.SystemBus()
     170            self._watch = self._sys_bus.watch_name_owner(_NM_SERVICE,
     171                self._nm_owner_cb)
     172            found = self._sys_bus.name_has_owner(_NM_SERVICE)
     173
     174        except DBusException, err:
     175            _logger.exception('Error connecting to network manager: %s', err)
     176
     177        if not found:
    166178            addr, iface = self._get_address_fallback()
    167179            self._update_address(addr, iface)
    168180