[X2Go-Commits] python-x2go.git - release/0.4.0.x (branch) updated: 0.2.0.10-72-gbda44ea
X2Go dev team
git-admin at x2go.org
Tue Jan 7 16:18:20 CET 2014
The branch, release/0.4.0.x has been updated
via bda44ea56d0e45b4b5ced3b25aed52aa70baa5ff (commit)
from c0080475df80c728c9b5d1a44e60a2105327c73b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
debian/changelog | 1 +
x2go/session.py | 27 ++++++++++++++++++++++++++-
2 files changed, 27 insertions(+), 1 deletion(-)
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 60103f2..9ef6745 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -46,6 +46,7 @@ python-x2go (0.2.1.0-0~x2go1) UNRELEASED; urgency=low
on MS Windows).
- Use threading.Lock to prohibit simultaneous calls of
get_published_applications() of control sessions.
+ - Implement some internal locking for X2goSession objects.
* /debian/rules:
+ Allow package build on systems with missing dh_python2.
* /debian/control:
diff --git a/x2go/session.py b/x2go/session.py
index e841565..d6ae740 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -362,6 +362,7 @@ class X2goSession(object):
self.retrieve_server_features()
self._progress_status = 0
+ self._lock = threading.Lock()
def get_client_instance(self):
"""\
@@ -883,6 +884,8 @@ class X2goSession(object):
@rtype: C{str}
"""
+ self._lock.acquire()
+ self._lock.release()
return self.session_name
__get_session_name = get_session_name
@@ -1701,6 +1704,8 @@ class X2goSession(object):
@raise Exception: any exception that occurs during published application menu retrieval is passed through
"""
+ self._lock.acquire()
+
# initialize a dummy event to avoid many if clauses further down in the code
self.reset_progress_status()
_dummy_event = threading.Event()
@@ -1784,6 +1789,7 @@ class X2goSession(object):
self._progress_status = -1
progress_event.set()
+ self._lock.release()
return False
self._progress_status = 30
@@ -1869,6 +1875,7 @@ class X2goSession(object):
progress_event.set()
self.has_terminal_session() and self.terminal_session.session_info_unprotect()
+ self._lock.release()
return True
else:
@@ -1877,15 +1884,16 @@ class X2goSession(object):
self._progress_status = -1
progress_event.set()
+ self._lock.release()
return False
- return self.running
else:
self._progress_status = -1
progress_event.set()
self._X2goSession__disconnect()
+ self._lock.release()
return False
__resume = resume
@@ -1937,6 +1945,8 @@ class X2goSession(object):
@raise X2goSessionException: if the available desktop session appears to be dead, in fact
"""
+ self._lock.acquire()
+
# initialize a dummy event to avoid many if clauses further down in the code
self.reset_progress_status()
_dummy_event = threading.Event()
@@ -2005,6 +2015,7 @@ class X2goSession(object):
self._progress_status = 100
progress_event.set()
+ self._lock.release()
return self.running
else:
self.terminal_session = None
@@ -2019,6 +2030,7 @@ class X2goSession(object):
self._X2goSession__disconnect()
+ self._lock.release()
return False
__share_desktop = share_desktop
@@ -2032,6 +2044,7 @@ class X2goSession(object):
@raise X2goSessionException: if the session could not be suspended
"""
+ self._lock.acquire()
if self.is_alive():
if self.has_terminal_session():
@@ -2051,6 +2064,7 @@ class X2goSession(object):
self.session_cleanup()
del self.terminal_session
self.terminal_session = None
+ self._lock.release()
return True
elif self.has_control_session() and self.session_name:
@@ -2062,14 +2076,17 @@ class X2goSession(object):
self.faulty = False
self.active = False
self.session_cleanup()
+ self._lock.release()
return True
else:
+ self._lock.release()
raise x2go_exceptions.X2goSessionException('cannot suspend session')
else:
self._X2goSession__disconnect()
+ self._lock.release()
return False
__suspend = suspend
@@ -2083,6 +2100,7 @@ class X2goSession(object):
@raise X2goSessionException: if the session could not be terminated
"""
+ self._lock.acquire()
if self.is_alive():
if self.has_terminal_session():
@@ -2101,6 +2119,7 @@ class X2goSession(object):
self.session_cleanup()
del self.terminal_session
self.terminal_session = None
+ self._lock.release()
return True
elif self.has_control_session() and self.session_name:
@@ -2112,13 +2131,16 @@ class X2goSession(object):
self.faulty = False
self.active = False
self.session_cleanup()
+ self._lock.release()
return True
else:
+ self._lock.release()
raise x2go_exceptions.X2goSessionException('cannot terminate session')
else:
self._X2goSession__disconnect()
+ self._lock.release()
return False
__terminate = terminate
@@ -2157,8 +2179,11 @@ class X2goSession(object):
@rtype: C{bool}
"""
+ self._lock.acquire()
if self.has_terminal_session():
+ self._lock.release()
return self.terminal_session.ok()
+ self._lock.release()
return False
__session_ok = session_ok
hooks/post-receive
--
python-x2go.git (Python X2Go Client API)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "python-x2go.git" (Python X2Go Client API).
More information about the x2go-commits
mailing list