summaryrefslogtreecommitdiffstats
path: root/sesman
diff options
context:
space:
mode:
authorTimothy Pearson <tpearson@raptorengineering.com>2019-03-03 16:18:41 -0600
committerTimothy Pearson <tpearson@raptorengineering.com>2019-03-04 08:05:23 -0600
commit9b60913b3638a021533dadd350d653d19d157a94 (patch)
tree2a6be554442cccf8fb05e3b84aed18e67ce8fb8f /sesman
parent02ed98539c5e7f9eee883d07ca0acaa507f7a75a (diff)
downloadxrdp-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.c24
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);
}