This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository python-x2go. commit a40d73f91b45f07130112b6c1aa1e22186d5fb5f Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Fri Sep 5 15:17:39 2014 +0200 Clean up terminal sessions properly when the clean_sessions() method of the control session has got called. --- debian/changelog | 2 ++ x2go/backends/control/plain.py | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 823dec0..f5857ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -85,6 +85,8 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low - For reverse port forwardings use IPv4 localhost address only. - Assure proper Telekinesis client cleanup when sessions suspends/ terminates. + - Clean up terminal sessions properly when the clean_sessions() method + of the control session has got called. * debian/control: + Add dependencies: python-requests, python-simplejson. * python-x2go.spec: diff --git a/x2go/backends/control/plain.py b/x2go/backends/control/plain.py index 5409198..70f5ca2 100644 --- a/x2go/backends/control/plain.py +++ b/x2go/backends/control/plain.py @@ -1706,7 +1706,15 @@ class X2GoControlSession(paramiko.SSHClient): else: session_names = [ _sn for _sn in session_list.keys() if not session_list[_sn].is_published_applications_provider() ] for session_name in session_names: - self.terminate(session_name=session_name, destroy_terminals=destroy_terminals) + if self.associated_terminals.has_key(session_name): + self.associated_terminals[session_name].terminate() + if destroy_terminals: + if self.associated_terminals[session_name] is not None: + self.associated_terminals[session_name].__del__() + try: del self.associated_terminals[session_name] + except KeyError: pass + else: + self.terminate(session_name=session_name) def is_connected(self): """\ @@ -1824,18 +1832,19 @@ class X2GoControlSession(paramiko.SSHClient): """ _ret = False - _session_names = [ t.get_session_name() for t in self.associated_terminals.values() ] - if session_name in _session_names: + if session_name in self.associated_terminals.keys(): self.logger('terminating associated session: %s' % session_name, loglevel=log.loglevel_DEBUG) (stdin, stdout, stderr) = self._x2go_exec_command("x2goterminate-session %s" % session_name, loglevel=log.loglevel_DEBUG) stdout.read() stderr.read() - if self.associated_terminals.has_key(session_name): - if self.associated_terminals[session_name] is not None and destroy_terminals: + + if destroy_terminals: + if self.associated_terminals[session_name] is not None: self.associated_terminals[session_name].__del__() try: del self.associated_terminals[session_name] except KeyError: pass + self.terminated_terminals.append(session_name) _ret = True -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git