The branch, twofactorauth has been updated via 21c4a93cb38b98a7c20a39b91d5faeaab88c77db (commit) from 2051ce5c73f9abe4d0124173f1bb784684202560 (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 | 2 ++ x2go/backends/control/_stdout.py | 4 ---- x2go/session.py | 46 +++++++++++++++++++++++++------------- 3 files changed, 32 insertions(+), 20 deletions(-) The diff of changes is: diff --git a/debian/changelog b/debian/changelog index b5f5cab..c2d04af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,8 @@ python-x2go (0.1.1.0-0~x2go1) UNRELEASED; urgency=low - Fix multiple notifications for the same session state change, reliably differentiate between found sessions after connect and newly started sessions from another client. + - Mark terminals as PENDING even before the X2goTerminalSession object is + created. -- Mike Gabriel <mike@mimino.das-netzwerkteam.de> Wed, 22 Jun 2011 01:20:48 +0200 diff --git a/x2go/backends/control/_stdout.py b/x2go/backends/control/_stdout.py index 5c7ce76..98cda04 100644 --- a/x2go/backends/control/_stdout.py +++ b/x2go/backends/control/_stdout.py @@ -563,10 +563,6 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient): _success = False if session_name is not None: - if self.is_running(session_name): - self.suspend(session_name) - gevent.sleep(10) - try: _success = _terminal.resume() except x2go_exceptions.X2goFwTunnelException: diff --git a/x2go/session.py b/x2go/session.py index 01441c7..8893583 100644 --- a/x2go/session.py +++ b/x2go/session.py @@ -624,6 +624,8 @@ class X2goSession(object): @rtype: C{X2goControlTerminal*} instance """ + if self.terminal_session == 'PENDING': + return None return self.terminal_session __get_terminal_session = get_terminal_session @@ -636,7 +638,7 @@ class X2goSession(object): """ - return self.terminal_session is not None + return self.terminal_session not in (None, 'PENDING') __has_terminal_session = has_terminal_session def check_host(self): @@ -936,25 +938,30 @@ class X2goSession(object): @rtype: C{bool} """ + self.terminal_session == 'PENDING' _new_session = False if self.session_name is None: self.session_name = session_name if self.is_alive(): _control = self.control_session - _terminal = _control.resume(session_name=self.session_name, - session_instance=self, - logger=self.logger, **self.terminal_params) + + if _control.is_running(session_name): + _control.suspend(session_name) + gevent.sleep(10) + + self.terminal_session = _control.resume(session_name=self.session_name, + session_instance=self, + logger=self.logger, **self.terminal_params) if self.session_name is None: _new_session = True - self.session_name = _terminal.session_info.name + self.session_name = self.terminal_session.session_info.name - if _terminal is not None: + if self.terminal_session != 'PENDING': - self.terminal_session = _terminal if SUPPORTED_SOUND and self.terminal_session.params.snd_system is not 'none': - _terminal.start_sound() + self.terminal_session.start_sound() if (SUPPORTED_PRINTING and self.printing) or \ (SUPPORTED_MIMEBOX and self.allow_mimebox) or \ @@ -990,6 +997,7 @@ class X2goSession(object): return True else: + self.terminal_session = None return False return self.running @@ -1031,12 +1039,13 @@ class X2goSession(object): @rtype: C{bool} """ + self.terminal_session = 'PENDING' if self.is_alive(): _control = self.control_session - _terminal = _control.share_desktop(desktop=desktop, user=user, display=display, share_mode=share_mode, - logger=self.logger, **self.terminal_params) + self.terminal_session = _control.share_desktop(desktop=desktop, user=user, display=display, share_mode=share_mode, + logger=self.logger, **self.terminal_params) - if _terminal: + if self.terminal_session != 'PENDING': self.terminal_session = _terminal self.session_name = self.terminal_session.session_info.name @@ -1052,6 +1061,7 @@ class X2goSession(object): return self.running else: + self.terminal_session = None return False else: @@ -1169,7 +1179,7 @@ class X2goSession(object): @rtype: C{bool} """ - if self.terminal_session is not None: + if self.has_terminal_session(): return self.terminal_session.ok() return False __session_ok = session_ok @@ -1262,10 +1272,13 @@ class X2goSession(object): @rtype: C{bool} """ - if self.allow_share_local_folders: - return self.terminal_session.share_local_folder(folder_name=folder_name) + if self.has_terminal_session(): + if self.allow_share_local_folders: + return self.terminal_session.share_local_folder(folder_name=folder_name) + else: + self.logger('local folder sharing is disabled for this session profile', loglevel=log.loglevel_WARN) else: - self.logger('local folder sharing is disabled for this session profile', loglevel=log.loglevel_WARN) + raise X2goSessionException('this X2goSession object does not have any associated terminal') __share_local_folder = share_local_folder def session_cleanup(self): @@ -1275,5 +1288,6 @@ class X2goSession(object): """ if self.has_terminal_session(): self.terminal_session.release_proxy() + if self.has_terminal_session(): self.terminal_session.__del__() - self.terminal_session = None + self.terminal_session = None 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).