[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 0.1.1.4-155-gfdfd1f3

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


The branch, build-baikal has been updated
       via  fdfd1f388eaee05a77ef928664ba2f7c6c2b8bb1 (commit)
      from  451748c73bc038c127e89e05e8bb30d5814416aa (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/__init__.py |    5 -----
 x2go/cleanup.py  |   10 ++++++++--
 x2go/guardian.py |   10 +---------
 x2go/xserver.py  |   18 ++++++++++++++----
 4 files changed, 23 insertions(+), 20 deletions(-)

The diff of changes is:
diff --git a/x2go/__init__.py b/x2go/__init__.py
index d6f1fc3..cd60a0a 100644
--- a/x2go/__init__.py
+++ b/x2go/__init__.py
@@ -165,11 +165,6 @@ monkey.patch_all()
 
 import utils
 
-import guardian
-import signal as _signal
-_signal.signal (_signal.SIGTERM, guardian._sigterm_handle )
-_signal.signal (_signal.SIGINT, guardian._sigterm_handle )
-
 from client import X2goClient
 from backends.profiles import X2goSessionProfiles
 from backends.printing import X2goClientPrinting
diff --git a/x2go/cleanup.py b/x2go/cleanup.py
index 82d49d1..bc4f667 100644
--- a/x2go/cleanup.py
+++ b/x2go/cleanup.py
@@ -27,6 +27,7 @@ import paramiko
 import threading
 
 # Python X2Go modules
+import guardian
 import rforward
 from defaults import X2GOCLIENT_OS as _X2GOCLIENT_OS
 
@@ -85,7 +86,6 @@ def x2go_cleanup(e=None, threads=None):
             for t in threads:
                 if type(t) == xserver.X2goXServer:
                     t.stop_thread()
-                    gevent.sleep(1)
                     del t
 
         # on Windows: stop the PulseAudio daemon that we evoked
@@ -93,9 +93,15 @@ def x2go_cleanup(e=None, threads=None):
             for t in threads:
                 if type(t) == pulseaudio.X2goPulseAudio:
                     t.stop_thread()
-                    gevent.sleep(1)
                     del t
 
+        for t in threads:
+            if type(t) == guardian.X2goSessionGuardian:
+                t.stop_thread()
+                del t
+
+        gevent.sleep(1)
+
         if e is not None:
             raise e
 
diff --git a/x2go/guardian.py b/x2go/guardian.py
index 5b8ea01..817f86f 100644
--- a/x2go/guardian.py
+++ b/x2go/guardian.py
@@ -34,12 +34,6 @@ import copy
 from cleanup import x2go_cleanup
 import log
 
-_sigterm_received = False
-def _sigterm_handle(s, f):
-    global _sigterm_received
-    _sigterm_received = True
-    return 0
-
 class X2goSessionGuardian(threading.Thread):
     """\
     L{X2goSessionGuardian} thread controls X2Go session threads and their sub-threads (like 
@@ -103,11 +97,9 @@ class X2goSessionGuardian(threading.Thread):
         The handler of this L{X2goSessionGuardian} thread.
 
         """
-        global _sigterm_received
-
         seconds = 0
         self._keepalive = True
-        while not _sigterm_received and self._keepalive:
+        while self._keepalive:
             gevent.sleep(1)
             seconds += 1
 
diff --git a/x2go/xserver.py b/x2go/xserver.py
index 217b577..666add1 100644
--- a/x2go/xserver.py
+++ b/x2go/xserver.py
@@ -212,6 +212,7 @@ class X2goXServer(threading.Thread):
 
         self.xserver_name = xserver_name
         self.xserver_config = xserver_config
+        self.hProcess = None
         if self.xserver_config.has_key('display'):
             self.logger('setting DISPLAY environment variable to %s' % self.xserver_config['display'], loglevel=log.loglevel_NOTICE)
             os.environ.update({'DISPLAY': str(self.xserver_config['display'])})
@@ -219,6 +220,10 @@ class X2goXServer(threading.Thread):
         self.daemon = True
         self.start()
 
+    def __del__(self):
+
+        self._terminate_xserver()
+
     def run(self):
         """\
         Start this L{X2goXServer} thread. This will launch the configured XServer application.
@@ -241,16 +246,21 @@ class X2goXServer(threading.Thread):
                                                 None,
                                                 si,
                                                )
-            (hProcess, hThread, processId, threadId) = p_info
+            (self.hProcess, hThread, processId, threadId) = p_info
 
         while self._keepalive:
             gevent.sleep(1)
 
-        self.logger('terminating running XServer ,,%s\'\'' % self.xserver_name, loglevel=log.loglevel_DEBUG)
 
-        if _X2GOCLIENT_OS == 'Windows':
+	self._terminate_xserver()
+
+    def _terminate_xserver(self):
+
+	self.logger('terminating running XServer ,,%s\'\'' % self.xserver_name, loglevel=log.loglevel_DEBUG)
+
+        if _X2GOCLIENT_OS == 'Windows' and self.hProcess is not None:
             try:
-                win32process.TerminateProcess(hProcess, 0)
+                win32process.TerminateProcess(self.hProcess, 0)
             except win32process.error:
                 self.logger('XServer ,,%s\'\' could not be terminated.' % self.xserver_name, loglevel=log.loglevel_DEBUG)
 


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