Merge pull request #561 from ThomasWaldmann/fix-locking

fix locking, partial fix for #502
This commit is contained in:
TW 2016-01-16 18:46:13 +01:00
commit c667d330b4

View file

@ -278,9 +278,11 @@ class UpgradableLock:
try:
if remove is not None:
self._roster.modify(remove, REMOVE)
remove = None
if len(self._roster.get(SHARED)) == 0:
return # we are the only one and we keep the lock!
# restore the roster state as before (undo the roster change):
if remove is not None:
self._roster.modify(remove, ADD)
except:
# avoid orphan lock when an exception happens here, e.g. Ctrl-C!
self._lock.release()