From f8e3b0626a98d971f121a37ed6bf48b227d8bb0a Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Fri, 20 Mar 2009 10:19:17 +0000 Subject: Fix nondeterministic denials for no-interface messages #575 Thanks to Dan Williams and Colin Walters for their assistance in spotting this. upstream bug fdo #18961 --- diff --git a/extensions/deviceicon/network.py b/extensions/deviceicon/network.py index 01e3c1a..47864de 100644 --- a/extensions/deviceicon/network.py +++ b/extensions/deviceicon/network.py @@ -192,6 +192,7 @@ class WirelessDeviceView(ToolButton): self._bus = dbus.SystemBus() self._device = device + self._device_props = None self._flags = 0 self._name = '' self._strength = 0 @@ -218,14 +219,15 @@ class WirelessDeviceView(ToolButton): self.set_palette(self._palette) self._palette.set_group_id('frame') - props = dbus.Interface(self._device, 'org.freedesktop.DBus.Properties') - props.GetAll(_NM_DEVICE_IFACE, byte_arrays=True, - reply_handler=self.__get_device_props_reply_cb, - error_handler=self.__get_device_props_error_cb) + self._device_props = dbus.Interface(self._device, + 'org.freedesktop.DBus.Properties') + self._device_props.GetAll(_NM_DEVICE_IFACE, byte_arrays=True, + reply_handler=self.__get_device_props_reply_cb, + error_handler=self.__get_device_props_error_cb) - self._device.Get(_NM_WIRELESS_IFACE, 'ActiveAccessPoint', - reply_handler=self.__get_active_ap_reply_cb, - error_handler=self.__get_active_ap_error_cb) + self._device_props.Get(_NM_WIRELESS_IFACE, 'ActiveAccessPoint', + reply_handler=self.__get_active_ap_reply_cb, + error_handler=self.__get_active_ap_error_cb) self._bus.add_signal_receiver(self.__state_changed_cb, signal_name='StateChanged', @@ -276,10 +278,9 @@ class WirelessDeviceView(ToolButton): def __state_changed_cb(self, new_state, old_state, reason): self._device_state = new_state self._update_state() - - self._device.Get(_NM_WIRELESS_IFACE, 'ActiveAccessPoint', - reply_handler=self.__get_active_ap_reply_cb, - error_handler=self.__get_active_ap_error_cb) + self._device_props.Get(_NM_WIRELESS_IFACE, 'ActiveAccessPoint', + reply_handler=self.__get_active_ap_reply_cb, + error_handler=self.__get_active_ap_error_cb) def __ap_properties_changed_cb(self, properties): self._update_properties(properties) @@ -343,9 +344,7 @@ class WirelessDeviceView(ToolButton): self._palette.set_connecting() self._icon.props.pulsing = True elif state == network.DEVICE_STATE_ACTIVATED: - props = dbus.Interface(self._device, - 'org.freedesktop.DBus.Properties') - address = props.Get(_NM_DEVICE_IFACE, 'Ip4Address') + address = self._device_props.Get(_NM_DEVICE_IFACE, 'Ip4Address') self._palette.set_connected(self._frequency, address) self._icon.props.pulsing = False diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py index e56c4d5..a87a1f2 100644 --- a/src/jarabe/desktop/meshbox.py +++ b/src/jarabe/desktop/meshbox.py @@ -101,15 +101,17 @@ class AccessPointView(CanvasPulsingIcon): dbus_interface=_NM_ACCESSPOINT_IFACE, byte_arrays=True) - self._device.Get(_NM_DEVICE_IFACE, 'State', - reply_handler=self.__get_device_state_reply_cb, - error_handler=self.__get_device_state_error_cb) - self._device.Get(_NM_WIRELESS_IFACE, 'WirelessCapabilities', - reply_handler=self.__get_device_caps_reply_cb, - error_handler=self.__get_device_caps_error_cb) - self._device.Get(_NM_WIRELESS_IFACE, 'ActiveAccessPoint', - reply_handler=self.__get_active_ap_reply_cb, - error_handler=self.__get_active_ap_error_cb) + interface_props = dbus.Interface(self._device, + 'org.freedesktop.DBus.Properties') + interface_props.Get(_NM_DEVICE_IFACE, 'State', + reply_handler=self.__get_device_state_reply_cb, + error_handler=self.__get_device_state_error_cb) + interface_props.Get(_NM_WIRELESS_IFACE, 'WirelessCapabilities', + reply_handler=self.__get_device_caps_reply_cb, + error_handler=self.__get_device_caps_error_cb) + interface_props.Get(_NM_WIRELESS_IFACE, 'ActiveAccessPoint', + reply_handler=self.__get_active_ap_reply_cb, + error_handler=self.__get_active_ap_error_cb) self._bus.add_signal_receiver(self.__device_state_changed_cb, signal_name='StateChanged', @@ -196,7 +198,7 @@ class AccessPointView(CanvasPulsingIcon): self._update() def __get_device_state_error_cb(self, err): - logging.debug('Error getting the access point properties: %s', err) + logging.debug('Error getting the device state: %s', err) def __get_all_props_reply_cb(self, properties): self._update_properties(properties) -- cgit v0.9.1