[X2Go-Commits] python-x2go.git - brokerclient (branch) updated: 0.2.0.1-7-gab5473d

X2Go dev team git-admin at x2go.org
Tue Jan 7 16:21:17 CET 2014


The branch, brokerclient has been updated
       via  ab5473d6e4c446309c589f8f5f8413f320e87b7a (commit)
      from  699da4c0fe1a13fc8e0a4988360b4101348cce77 (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/backends/control/_stdout.py |   19 +++++++++++++------
 x2go/guardian.py                 |    1 -
 3 files changed, 14 insertions(+), 7 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index e736b5b..8c59458 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,7 @@ python-x2go (0.2.0.2-0~x2go1) UNRELEASED; urgency=low
     - Ignoring timeouts for x2golistmounts and x2golistdesktops.
     - Add support to X2goSession class to launch sessions for the Python
       command line in five steps.
+    - Mark sessions as dead whenever an X2goControlSessionException occurs.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 30 May 2012 00:27:03 +0200
 
diff --git a/x2go/backends/control/_stdout.py b/x2go/backends/control/_stdout.py
index 06bef97..2ec995f 100644
--- a/x2go/backends/control/_stdout.py
+++ b/x2go/backends/control/_stdout.py
@@ -275,6 +275,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
                 self.sftp_client.put(os.path.normpath(local_path), remote_path)
             except x2go_exceptions.SSHException, socket.error:
                 # react to connection dropped error for SSH connections
+                self.session_died = True
                 self._transport_lock.release()
                 raise x2go_exceptions.X2goControlSessionException('The SSH connection was dropped during an sFTP put action.')
             self.sftp_client = None
@@ -305,6 +306,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
                 remote_fileobj.write(content)
                 remote_fileobj.close()
             except x2go_exceptions.SSHException, socket.error:
+                self.session_died = True
                 self._transport_lock.release()
                 self.logger('sFTP-write: opening remote file %s on host %s failed' % (remote_path, self.remote_peername()), loglevel=log.loglevel_WARN)
                 raise x2go_exceptions.X2goControlSessionException('The SSH connection was dropped during an sFTP write action.')
@@ -331,6 +333,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
             try:
                 self.sftp_client.remove(remote_path)
             except x2go_exceptions.SSHException, socket.error:
+                self.session_died = True
                 self._transport_lock.release()
                 self.logger('sFTP-write: removing remote file %s on host %s failed' % (remote_path, self.remote_peername()), loglevel=log.loglevel_WARN)
                 raise x2go_exceptions.X2goControlSessionException('The SSH connection was dropped during an sFTP remove action.')
@@ -377,33 +380,33 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
                 _retval = self.exec_command(_rewrite_password(cmd, user=self.get_transport().get_username(), password=self._session_password), **kwargs)
             except AttributeError:
                 self.session_died = True
+                self._transport_lock.release()
                 if self.sshproxy_session:
                     self.sshproxy_session.stop_thread()
-                self._transport_lock.release()
                 raise x2go_exceptions.X2goControlSessionException('the X2Go control session has died unexpectedly')
             except EOFError:
                 self.session_died = True
+                self._transport_lock.release()
                 if self.sshproxy_session:
                     self.sshproxy_session.stop_thread()
-                self._transport_lock.release()
                 raise x2go_exceptions.X2goControlSessionException('the X2Go control session has died unexpectedly')
             except x2go_exceptions.SSHException:
                 self.session_died = True
+                self._transport_lock.release()
                 if self.sshproxy_session:
                     self.sshproxy_session.stop_thread()
-                self._transport_lock.release()
                 raise x2go_exceptions.X2goControlSessionException('the X2Go control session has died unexpectedly')
             except gevent.timeout.Timeout:
                 self.session_died = True
+                self._transport_lock.release()
                 if self.sshproxy_session:
                     self.sshproxy_session.stop_thread()
-                self._transport_lock.release()
                 raise x2go_exceptions.X2goControlSessionException('the X2Go control session command timed out')
             except socket.error:
                 self.session_died = True
+                self._transport_lock.release()
                 if self.sshproxy_session:
                     self.sshproxy_session.stop_thread()
-                self._transport_lock.release()
                 raise x2go_exceptions.X2goControlSessionException('the X2Go control session has died unexpectedly')
             finally:
                 timer.cancel()
@@ -521,6 +524,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
                 try:
                     self._remote_username = self.get_transport().get_username()
                 except:
+                    self.session_died = True
                     raise x2go_exceptions.X2goControlSessionException('Lost connection to X2Go server')
         return self._remote_username
 
@@ -539,6 +543,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
                 try:
                     self._remote_peername = self.get_transport().getpeername()
                 except:
+                    self.session_died = True
                     raise x2go_exceptions.X2goControlSessionException('Lost connection to X2Go server')
         return self._remote_peername
 
@@ -842,6 +847,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
                 except x2go_exceptions.X2goTerminalSessionException:
                     pass
                 except x2go_exceptions.X2goControlSessionException:
+                    self.session_died
                     pass
                 t_obj.__del__()
             for t_name in t_names:
@@ -900,7 +906,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
             if self._x2go_exec_command('echo', loglevel=log.loglevel_DEBUG):
                 return True
         except x2go_exceptions.X2goControlSessionException:
-            pass
+            self.session_died = True
         return False
 
     def get_published_applications(self, lang=None, refresh=False, raw=False, very_raw=False, max_no_submenus=defaults.PUBAPP_MAX_NO_SUBMENUS):
@@ -1350,6 +1356,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient):
                     gevent.sleep(1)
 
             if _count >= _maxwait:
+                self.session_died = True
                 raise x2go_exceptions.X2goControlSessionException('x2golistsessions command failed after we have tried 20 times')
 
             # update internal variables when list_sessions() is called
diff --git a/x2go/guardian.py b/x2go/guardian.py
index 927811d..ba5d5b2 100644
--- a/x2go/guardian.py
+++ b/x2go/guardian.py
@@ -106,7 +106,6 @@ class X2goSessionGuardian(threading.Thread):
 
                 self.logger('Entering X2Go Guardian client management loop...', loglevel=log.loglevel_DEBUG)
 
-
                 if self.auto_update_listsessions_cache:
                     self.client_instance.update_cache_all_profiles(update_sessions=self.auto_update_listsessions_cache, 
                                                                    update_desktops=self.auto_update_listdesktops_cache,


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