diff options
author | Timothy Pearson <tpearson@raptorengineering.com> | 2019-03-03 16:18:41 -0600 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineering.com> | 2019-03-04 08:05:23 -0600 |
commit | 9b60913b3638a021533dadd350d653d19d157a94 (patch) | |
tree | 2a6be554442cccf8fb05e3b84aed18e67ce8fb8f /sesman | |
parent | 02ed98539c5e7f9eee883d07ca0acaa507f7a75a (diff) | |
download | xrdp-proprietary-9b60913b3638a021533dadd350d653d19d157a94.tar.gz xrdp-proprietary-9b60913b3638a021533dadd350d653d19d157a94.zip |
Don't try connecting to remote node if preliminary node allocation has failed for any reason
Diffstat (limited to 'sesman')
-rw-r--r-- | sesman/session.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/sesman/session.c b/sesman/session.c index 1f591884..24958d87 100644 --- a/sesman/session.c +++ b/sesman/session.c @@ -527,7 +527,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); @@ -655,15 +655,21 @@ session_start_fork(int width, int height, int bpp, char *username, else if (pampid == 0) /* child: X11/client */ { char* remote_server = wait_for_remote_hostname(username); - wait_for_remote_xserver(remote_server, display); - env_set_user(username, 0, display, - g_cfg->session_variables1, - g_cfg->session_variables2); - //if (x_server_running(display)) - 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(username, 0, display, + g_cfg->session_variables1, + g_cfg->session_variables2); + } + if (remote_server && x_server_running_check_remote_ports(remote_server, display)) { + g_free(remote_server); // // RAPTOR session management // raptor_sm_run_remote_desktop(username, display, "/opt/trinity/bin/starttde"); @@ -762,6 +768,10 @@ session_start_fork(int width, int height, int bpp, char *username, 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); } |