From 9b18cc42932e3973d875a21860a3c807fcfa81fb Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 3 Mar 2019 00:38:14 -0600 Subject: [PATCH] Don't try connecting to remote node if preliminary node allocation has failed for any reason --- sesman/session.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/sesman/session.c b/sesman/session.c index 8a3453dc..70efd7c0 100644 --- a/sesman/session.c +++ b/sesman/session.c @@ -507,7 +507,7 @@ wait_for_remote_hostname(char* username) /* 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 @@ session_start_fork(tbus data, tui8 type, struct SCP_CONNECTION *c, 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 (x_server_running_check_remote_ports(remote_server, display)) + 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 (remote_server && x_server_running_check_remote_ports(remote_server, display)) { g_free(remote_server); @@ -788,7 +796,10 @@ session_start_fork(tbus data, tui8 type, struct SCP_CONNECTION *c, } 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); }