Branch: master

9b18cc42 2019-03-03 06:38:14 Timothy Pearson
Don't try connecting to remote node if preliminary node allocation has failed for any reason
M sesman/session.c

sesman/session.c

diff --git a/sesman/session.c b/sesman/session.c
index 8a3453d..70efd7c 100644
--- a/sesman/session.c
+++ b/sesman/session.c
@@ -507,7 +507,7 @@
   /* wait up to 5 secs for hostname to appear */
   i = 0;
   const char * hostname = raptor_sm_get_hostname_for_username(username, false);
-  while (strcmp(hostname, "") == 0)
+  while ((strcmp(hostname, "") == 0) || (strcmp(hostname, "ERROR") == 0))
   {
     g_free(hostname);
     hostname = raptor_sm_get_hostname_for_username(username, false);
@@ -682,14 +682,22 @@
         else if (window_manager_pid == 0)
         {
             char* remote_server = wait_for_remote_hostname(s->username);
-            wait_for_remote_xserver(remote_server, display);
-            env_set_user(s->username,
-                         0,
-                         display,
-                         g_cfg->env_names,
-                         g_cfg->env_values);
+            if ((strcmp(remote_server, "") == 0) || (strcmp(remote_server, "ERROR") == 0))
+            {
+                g_free(remote_server);
+                remote_server = NULL;
+                log_message(LOG_LEVEL_ERROR, "Unable to find available node for specified user / group.  Check group mappings in database?\n");
+            }
+            else {
+                wait_for_remote_xserver(remote_server, display);
+                env_set_user(s->username,
+                             0,
+                             display,
+                             g_cfg->env_names,
+                             g_cfg->env_values);
+            }
 
-            if (x_server_running_check_remote_ports(remote_server, display))
+            if (remote_server && x_server_running_check_remote_ports(remote_server, display))
             {
                 g_free(remote_server);
 
@@ -788,7 +796,10 @@
             }
             else
             {
-                g_free(remote_server);
+                if (remote_server)
+                {
+                    g_free(remote_server);
+                }
                 log_message(LOG_LEVEL_ERROR, "another Xserver might "
                             "already be active on display %d - see log", display);
             }
66ce7eff 2019-03-03 06:51:02 Timothy Pearson
Add debug warning when maximum session limit is hit for a specified user group
M raptorsmiface/libraptorsmiface.c

raptorsmiface/libraptorsmiface.c

diff --git a/raptorsmiface/libraptorsmiface.c b/raptorsmiface/libraptorsmiface.c
index bb934b3..6014ae9 100644
--- a/raptorsmiface/libraptorsmiface.c
+++ b/raptorsmiface/libraptorsmiface.c
@@ -705,6 +705,7 @@
 			mysql_close(conn);
 			return false;
 		}
+		dprint("[WARNING] Maximum session limit reached for group '%s'!\n", groupname);
 		free(groupname);
 		mysql_close(conn);
 		return true;
c0071d2e 2019-03-03 07:01:03 Timothy Pearson
Enhance logging for remote host check
M sesman/session.c

sesman/session.c

diff --git a/sesman/session.c b/sesman/session.c
index 70efd7c..2a04945 100644
--- a/sesman/session.c
+++ b/sesman/session.c
@@ -224,6 +224,8 @@
   int x_running;
   int sck;
 
+  log_message(LOG_LEVEL_DEBUG, "Checking for running X server on %s:%d\n", host, display);
+
   x_running = 0;
   /* check 59xx */
   {