summaryrefslogtreecommitdiff
path: root/dbus/bus.py
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-05-28 19:45:59 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2007-05-28 19:45:59 +0100
commitffb1d3310d97bc4d86a09604649f334e3367816f (patch)
treecd87f791228613a15491a3f7538a2e5cf2e5b5b7 /dbus/bus.py
parent03bcbff71d4bf112441dfd53300328c70d3a512c (diff)
downloaddbus-python-ffb1d3310d97bc4d86a09604649f334e3367816f.tar.gz
dbus.connection: Release signals lock before calling _clean_up_signal_match().
This prevents a deadlock when a signal match that's tracking name owner changes is removed, causing a match on NameOwnerChanged to be removed too. (Debian bug#426412) Also move more of the tree manipulation inside the lock, to be nice to anyone attempting a port to implementations without a GIL (mainly IronPython), and add a regression test for the above bug.
Diffstat (limited to 'dbus/bus.py')
-rw-r--r--dbus/bus.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/dbus/bus.py b/dbus/bus.py
index 9313289..04180a4 100644
--- a/dbus/bus.py
+++ b/dbus/bus.py
@@ -147,7 +147,7 @@ class BusConnection(Connection):
return match
def _clean_up_signal_match(self, match):
- # The signals lock must be held.
+ # The signals lock is no longer held here (it was in <= 0.81.0)
self.remove_match_string(str(match))
watch = self._signal_sender_matches.pop(match, None)
if watch is not None: