[X2Go-Commits] python-x2go.git - brokerclient (branch) updated: 0.1.0.3-48-gfe00a4d

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


The branch, brokerclient has been updated
       via  fe00a4d4a04d28fe242e054879d9a5a9ceaad357 (commit)
      from  bcbc75f490c112b47e2c30ce889f23f0ce0822ef (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:
 x2go/backends/proxy/base.py       |   27 ++++++++++++++++++++-------
 x2go/backends/terminal/_stdout.py |   14 ++++----------
 x2go/forward.py                   |    2 ++
 x2go/session.py                   |    7 ++++++-
 4 files changed, 32 insertions(+), 18 deletions(-)

The diff of changes is:
diff --git a/x2go/backends/proxy/base.py b/x2go/backends/proxy/base.py
index 0a3fc34..4bbac10 100644
--- a/x2go/backends/proxy/base.py
+++ b/x2go/backends/proxy/base.py
@@ -131,12 +131,17 @@ class X2goProxyBASE(threading.Thread):
         if left open.
 
         """
-        if self.ok():
+        if self.proxy:
             self.logger('Shutting down X2go proxy subprocess', loglevel=log.loglevel_DEBUG)
-            self.proxy.kill()
+            try:
+                self.proxy.kill()
+            except OSError, e:
+                self.logger('X2go proxy shutdown gave a message that we may ignore: %s' % str(e), loglevel=log.loglevel_WARNING)
+            self.proxy = None
         if self.fw_tunnel is not None:
             self.logger('Shutting down Paramiko/SSH forwarding tunnel', loglevel=log.loglevel_DEBUG)
             forward.stop_forward_tunnel(self.fw_tunnel)
+            self.fw_tunnel = None
         if self.session_log_stdout is not None:
             self.session_log_stdout.close()
         if self.session_log_stderr is not None:
@@ -178,7 +183,8 @@ class X2goProxyBASE(threading.Thread):
                                                       remote_port=self.session_info.graphics_port, 
                                                       ssh_transport=self.ssh_transport, 
                                                       session_instance=self.session_instance,
-                                                      logger=self.logger, )
+                                                      logger=self.logger,
+                                                     )
 
         # update the proxy port in PROXY_ARGS
         self._update_local_proxy_socket(local_graphics_port)
@@ -211,9 +217,9 @@ class X2goProxyBASE(threading.Thread):
 
         if _X2GOCLIENT_OS == 'Windows':
             _stdin.close()
-        self.logger('terminating proxy: %s' % p, loglevel=log.loglevel_DEBUG)
         try:
             p.terminate()
+            self.logger('terminating proxy: %s' % p, loglevel=log.loglevel_DEBUG)
         except OSError, e:
             if e.errno == 3:
                 # No such process
@@ -255,14 +261,21 @@ class X2goProxyBASE(threading.Thread):
 
         """
         threading.Thread.start(self)
-        while self.proxy is None:
-            gevent.sleep(.2)
+
+        # wait for proxy to get started
+        _count = 0
+        _maxwait = 40
+        while self.proxy is None and _count < _maxwait:
+            _count += 1
+            self.logger('waiting for proxy to come up: 0.4s x %s' % _count, loglevel=log.loglevel_DEBUG)
+            gevent.sleep(.4)
 
         # also wait for fw_tunnel to become active
         _count = 0
         _maxwait = 40
         while not self.fw_tunnel.is_active and _count < _maxwait:
             _count += 1
+            self.logger('waiting for port fw tunnel to come up: 0.5s x %s' % _count, loglevel=log.loglevel_DEBUG)
             gevent.sleep(.5)
 
         return self.proxy
@@ -275,4 +288,4 @@ class X2goProxyBASE(threading.Thread):
         @rtype C{bool}
 
         """
-        return self.proxy and self.proxy.poll is not None
+        return bool(self.proxy and self.proxy.poll() is None)
diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py
index 38e0739..dc9d3f4 100644
--- a/x2go/backends/terminal/_stdout.py
+++ b/x2go/backends/terminal/_stdout.py
@@ -331,8 +331,7 @@ class X2goTerminalSessionSTDOUT(object):
 
     def _x2go_tidy_up(self):
 
-        if self.proxy.ok():
-            self.release_proxy()
+        self.release_proxy()
 
         try:
             if self.control_session.get_transport() is not None:
@@ -924,9 +923,8 @@ class X2goTerminalSessionSTDOUT(object):
         @rtype: bool
 
         """
-        if self.proxy.ok():
-            self.release_proxy()
         self.control_session.suspend(session_name=self.session_info.name)
+        self.release_proxy()
 
         # TODO: check if session has really suspended
         _ret = True
@@ -941,9 +939,8 @@ class X2goTerminalSessionSTDOUT(object):
         @rtype: bool
 
         """
-        if self.proxy.ok():
-            self.release_proxy()
         self.control_session.terminate(session_name=self.session_info.name)
+        self.release_proxy()
 
         # TODO: check if session has really suspended
         _ret = True
@@ -955,7 +952,4 @@ class X2goTerminalSessionSTDOUT(object):
         STILL UNDOCUMENTED
 
         """
-        try:
-            self.proxy.__del__()
-        except:
-            pass
+        self.proxy.__del__()
diff --git a/x2go/forward.py b/x2go/forward.py
index 09950d5..34466d0 100644
--- a/x2go/forward.py
+++ b/x2go/forward.py
@@ -103,6 +103,7 @@ class X2goFwServer(StreamServer):
             # it is recommended here to have passed on the session instance to this object...
             if self.session_instance:
                 if not self.session_instance.is_connected():
+                    print 'HALLO'
                     break
 
             _count += 1
@@ -189,6 +190,7 @@ class X2goFwServer(StreamServer):
                 _success = True
             except socket.error:
                 gevent.sleep(.2)
+                self.logger('could not close fw_tunnel socket, try again (%s of %s)' % (_count, _maxwait), loglevel=log.loglevel_WARN)
 
         if _count >= _maxwait:
             self.logger('forwarding tunnel to [%s]:%d could not be closed properly' % (self.chain_host, self.chain_port), loglevel=log.loglevel_WARN)
diff --git a/x2go/session.py b/x2go/session.py
index 89499c3..37283b1 100644
--- a/x2go/session.py
+++ b/x2go/session.py
@@ -965,7 +965,10 @@ class X2goSession(object):
 
             if self.session_name is None:
                 _new_session = True
-                self.session_name = self.terminal_session.session_info.name
+                try:
+                    self.session_name = self.terminal_session.session_info.name
+                except AttributeError:
+                    raise X2goSessionException('start of new X2go session failed')
 
             if self.has_terminal_session() and not self.faulty:
 
@@ -1317,5 +1320,7 @@ 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


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