[X2Go-Commits] [x2gobroker] 02/04: On session resumption take profile's host list into account. Don't resume sessions the profile has not been configured for. (Fixes: #553).

git-admin at x2go.org git-admin at x2go.org
Fri Sep 12 00:30:32 CEST 2014


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2gobroker.

commit 214ddadd62b6d5ba0e6b2e9dbd38563bbbc9f233
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Thu Sep 11 23:59:47 2014 +0200

    On session resumption take profile's host list into account. Don't resume sessions the profile has not been configured for. (Fixes: #553).
---
 debian/changelog                  |    2 ++
 x2gobroker/brokers/base_broker.py |   50 +++++++++++++++++++++----------------
 2 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 4f207a1..cfe0cf4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -199,6 +199,8 @@ x2gobroker (0.0.3.0-0x2go1) UNRELEASED; urgency=low
     - Fix typos and host/port mixups in the remote_sshproxy logic. (Fixes: #544).
     - Make sure find_busy_servers in agent.py returns a tuple (recent API change)
       to not break profiles with multiple servers. (Fixes: #545).
+    - On session resumption take profile's host list into account. Don't resume
+      sessions the profile has not been configured for. (Fixes: #553).
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Fri, 07 Jun 2013 23:25:30 +0200
 
diff --git a/x2gobroker/brokers/base_broker.py b/x2gobroker/brokers/base_broker.py
index b72576d..ea48f77 100644
--- a/x2gobroker/brokers/base_broker.py
+++ b/x2gobroker/brokers/base_broker.py
@@ -1092,28 +1092,34 @@ class X2GoBroker(object):
                 running_sessions = []
                 suspended_sessions = []
                 for session_info in session_list:
-                    if session_info.split('|')[4] == 'R':
-                        running_sessions.append(session_info)
-                    if session_info.split('|')[4] == 'S':
-                        suspended_sessions.append(session_info)
-
-                # we prefer suspended sessions over resuming sessions if we find sessions with both
-                # states of activity
-                if suspended_sessions:
-                    session_info = suspended_sessions[0]
-                elif running_sessions:
-                    session_info = running_sessions[0]
-                    x2gobroker.agent.suspend_session(username=username, session_name=session_info.split('|')[1], remote_agent=remote_agent)
-                    # this is the turn-around in x2gocleansessions, so waiting as along as the daemon
-                    # that will suspend the session
-                    time.sleep(2)
-                    session_info = session_info.replace('|R|', '|S|')
-
-                # only use the server's official hostname (as set on the server)
-                # if we know about the real/physical address of the server
-                _session_server_name = session_info.split('|')[3]
-                if profile.has_key('host={server_name}'.format(server_name=_session_server_name)):
-                    server_name = _session_server_name
+                    session_host, session_domain = session_info.split('|')[3].split('.', 1)
+                    if session_host in server_list:
+                        if session_info.split('|')[4] == 'R':
+                            running_sessions.append(session_info)
+                        if session_info.split('|')[4] == 'S':
+                            suspended_sessions.append(session_info)
+
+                if suspended_sessions or running_sessions:
+                    # we prefer suspended sessions over resuming sessions if we find sessions with both
+                    # states of activity
+                    if suspended_sessions:
+                        session_info = suspended_sessions[0]
+                    elif running_sessions:
+                        session_info = running_sessions[0]
+                        x2gobroker.agent.suspend_session(username=username, session_name=session_info.split('|')[1], remote_agent=remote_agent)
+                        # this is the turn-around in x2gocleansessions, so waiting as along as the daemon
+                        # that will suspend the session
+                        time.sleep(2)
+                        session_info = session_info.replace('|R|', '|S|')
+
+                    # only use the server's official hostname (as set on the server)
+                    # if we have been provided with a physical server address.
+                    # If no physical server address has been provided, we have to use
+                    # the host address as found in server_list (and hope we can connect
+                    # to that address.
+                    _session_server_name = session_info.split('|')[3]
+                    if profile.has_key('host={server_name}'.format(server_name=_session_server_name)):
+                        server_name = _session_server_name
 
             except IndexError:
                 # FIXME: if we get here, we have to deal with a broken session info

--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git


More information about the x2go-commits mailing list