summaryrefslogtreecommitdiff
path: root/sleekxmpp/thirdparty/statemachine.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2012-08-10 14:11:44 -0700
committerLance Stout <lancestout@gmail.com>2012-08-10 14:11:44 -0700
commit814a50e36feb73ced9152680560261addf3ff0ea (patch)
tree6e610189cd34f52fd76cf88aeb816c421d474ba8 /sleekxmpp/thirdparty/statemachine.py
parent230465b94637ff83cd40e8a2a2fe117d61d5fe79 (diff)
downloadslixmpp-814a50e36feb73ced9152680560261addf3ff0ea.tar.gz
slixmpp-814a50e36feb73ced9152680560261addf3ff0ea.tar.bz2
slixmpp-814a50e36feb73ced9152680560261addf3ff0ea.tar.xz
slixmpp-814a50e36feb73ced9152680560261addf3ff0ea.zip
Fix handling state machine lock when quick exiting.
Diffstat (limited to 'sleekxmpp/thirdparty/statemachine.py')
-rw-r--r--sleekxmpp/thirdparty/statemachine.py8
1 files changed, 4 insertions, 4 deletions
diff --git a/sleekxmpp/thirdparty/statemachine.py b/sleekxmpp/thirdparty/statemachine.py
index 1f01a92a..4b5ecd6b 100644
--- a/sleekxmpp/thirdparty/statemachine.py
+++ b/sleekxmpp/thirdparty/statemachine.py
@@ -83,16 +83,16 @@ class StateMachine(object):
if not to_state in self.__states:
raise ValueError("StateMachine does not contain to_state %s." % to_state)
+ if self.__current_state == to_state:
+ return True
+
start = time.time()
while not self.lock.acquire(False):
time.sleep(.001)
if (start + wait - time.time()) <= 0.0:
- log.debug("Could not acquire lock")
+ log.debug("==== Could not acquire lock in %s sec: %s -> %s ", wait, self.__current_state, to_state)
return False
- if self.__current_state == to_state:
- return True
-
while not self.__current_state in from_states:
# detect timeout:
remainder = start + wait - time.time()