Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2009-03-20 10:19:17 (GMT)
committer Simon Schampijer <simon@schampijer.de>2009-03-20 10:19:17 (GMT)
commitf8e3b0626a98d971f121a37ed6bf48b227d8bb0a (patch)
tree0576a34ba241cb5aeec4d354e3d99e15ec933496
parentd3a08397358a73ce41db72686ed5cb2c27f0f11a (diff)
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
-rw-r--r--extensions/deviceicon/network.py27
-rw-r--r--src/jarabe/desktop/meshbox.py22
2 files changed, 25 insertions, 24 deletions
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)