This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository python-x2go. commit 9e05ee502903b933d405987f34ef584b47d08dc5 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Thu Oct 9 05:46:35 2014 +0200 X2GoControlSession: Don't mess with the associated_terminals dict if the control session has already died away (i.e. been forcefully disconnect). --- debian/changelog | 3 +++ x2go/backends/control/plain.py | 30 ++++++++++++++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/debian/changelog b/debian/changelog index 47e7278..8cdfe2c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -107,6 +107,9 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low - Release _share_local_folder_lock on instance X2GoTerminalSession destruction. - Detect non-installed sshfs (required for Telekinesis). + - X2GoControlSession: Don't mess with the associated_terminals dict if + the control session has already died away (i.e. been forcefully + disconnect). * debian/control: + Add dependencies: python-requests, python-simplejson. + Add R (python-x2go): sshfs. diff --git a/x2go/backends/control/plain.py b/x2go/backends/control/plain.py index 0bd08ff..d678276 100644 --- a/x2go/backends/control/plain.py +++ b/x2go/backends/control/plain.py @@ -111,8 +111,6 @@ class X2GoControlSession(paramiko.SSHClient): C{paramiko.SSHClient} and adds on X2Go related functionality. """ - associated_terminals = None - def __init__(self, profile_name='UNKNOWN', add_to_known_hosts=False, @@ -1120,7 +1118,7 @@ class X2GoControlSession(paramiko.SSHClient): """ if self.associated_terminals: t_names = self.associated_terminals.keys() - for t_obj in self.associated_terminals.values(): + for t_obj in self.associated_terminals.values(): try: if not self.session_died: t_obj.suspend() @@ -1676,19 +1674,19 @@ class X2GoControlSession(paramiko.SSHClient): raise x2go_exceptions.X2GoControlSessionException('x2golistsessions command failed after we have tried 20 times') # update internal variables when list_sessions() is called - for _session_name, _terminal in self.associated_terminals.items(): - if _session_name in _listsessions.keys(): - # update the whole session_info object within the terminal session - if hasattr(self.associated_terminals[_session_name], 'session_info') and not self.associated_terminals[_session_name].is_session_info_protected(): - self.associated_terminals[_session_name].session_info.update(_listsessions[_session_name]) - else: - try: del self.associated_terminals[_session_name] - except KeyError: pass - self.terminated_terminals.append(_session_name) - if _terminal.is_suspended(): - try: del self.associated_terminals[_session_name] - except KeyError: pass - + if _success and not self.session_died: + for _session_name, _terminal in self.associated_terminals.items(): + if _session_name in _listsessions.keys(): + # update the whole session_info object within the terminal session + if hasattr(self.associated_terminals[_session_name], 'session_info') and not self.associated_terminals[_session_name].is_session_info_protected(): + self.associated_terminals[_session_name].session_info.update(_listsessions[_session_name]) + else: + try: del self.associated_terminals[_session_name] + except KeyError: pass + self.terminated_terminals.append(_session_name) + if _terminal.is_suspended(): + try: del self.associated_terminals[_session_name] + except KeyError: pass return _listsessions -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git