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

X2Go dev team git-admin at x2go.org
Wed Jan 8 15:30:34 CET 2014


The branch, build-baikal 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