diff options
author | Jay Sorg <jay.sorg@gmail.com> | 2017-03-18 14:45:58 -0700 |
---|---|---|
committer | jsorg71 <jay.sorg@gmail.com> | 2017-03-19 17:16:36 -0700 |
commit | 05c599666d722f7b312c7b8e6e770dfc85740d72 (patch) | |
tree | c68b623d40cbd27bc5cbd7188c4b8500e8f871c8 /sesman/sessvc/sessvc.c | |
parent | 5c8f050c1ac8a35209c73f961bee918fa2b4646d (diff) | |
download | xrdp-proprietary-05c599666d722f7b312c7b8e6e770dfc85740d72.tar.gz xrdp-proprietary-05c599666d722f7b312c7b8e6e770dfc85740d72.zip |
sesman: remove sessvc, one less process to manage
Diffstat (limited to 'sesman/sessvc/sessvc.c')
-rw-r--r-- | sesman/sessvc/sessvc.c | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/sesman/sessvc/sessvc.c b/sesman/sessvc/sessvc.c deleted file mode 100644 index c247027c..00000000 --- a/sesman/sessvc/sessvc.c +++ /dev/null @@ -1,141 +0,0 @@ -/** - * xrdp: A Remote Desktop Protocol server. - * - * Copyright (C) Jay Sorg 2004-2013 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - * @file sessvc.c - * @brief Session supervisor - * @author Simone Fedele - * - */ - -#if defined(HAVE_CONFIG_H) -#include "config_ac.h" -#endif -#include "file_loc.h" -#include "os_calls.h" -#include "arch.h" - -static int g_term = 0; - -/*****************************************************************************/ -void -term_signal_handler(int sig) -{ - g_writeln("xrdp-sessvc: term_signal_handler: got signal %d", sig); - g_term = 1; -} - -/*****************************************************************************/ -void -nil_signal_handler(int sig) -{ - g_writeln("xrdp-sessvc: nil_signal_handler: got signal %d", sig); -} - -/******************************************************************************/ -int -main(int argc, char **argv) -{ - int ret = 0; - int chansrv_pid = 0; - int wm_pid = 0; - int x_pid = 0; - int lerror = 0; - char exe_path[262]; - - g_init("xrdp-sessvc"); - g_memset(exe_path, 0, sizeof(exe_path)); - - if (argc < 3) - { - g_writeln("xrdp-sessvc: exiting, not enough parameters"); - g_deinit(); - return 1; - } - - g_signal_terminate(term_signal_handler); /* SIGTERM */ - g_signal_user_interrupt(term_signal_handler); /* SIGINT */ - g_signal_pipe(nil_signal_handler); /* SIGPIPE */ - x_pid = g_atoi(argv[1]); - wm_pid = g_atoi(argv[2]); - g_writeln("xrdp-sessvc: waiting for X (pid %d) and WM (pid %d)", - x_pid, wm_pid); - /* run xrdp-chansrv as a separate process */ - chansrv_pid = g_fork(); - - if (chansrv_pid == -1) - { - g_writeln("xrdp-sessvc: fork error"); - g_deinit(); - return 1; - } - else if (chansrv_pid == 0) /* child */ - { - g_set_current_dir(XRDP_SBIN_PATH); - g_snprintf(exe_path, 261, "%s/xrdp-chansrv", XRDP_SBIN_PATH); - g_execlp3(exe_path, "xrdp-chansrv", 0); - /* should not get here */ - g_writeln("xrdp-sessvc: g_execlp3() failed"); - g_deinit(); - return 1; - } - - lerror = 0; - /* wait for window manager to get done */ - ret = g_waitpid(wm_pid); - - while ((ret == 0) && !g_term) - { - ret = g_waitpid(wm_pid); - g_sleep(1); - } - - if (ret < 0) - { - lerror = g_get_errno(); - } - - g_writeln("xrdp-sessvc: WM is dead (waitpid said %d, errno is %d) " - "exiting...", ret, lerror); - /* kill channel server */ - g_writeln("xrdp-sessvc: stopping channel server"); - g_sigterm(chansrv_pid); - ret = g_waitpid(chansrv_pid); - - while ((ret == 0) && !g_term) - { - ret = g_waitpid(chansrv_pid); - g_sleep(1); - } - - /* kill X server */ - g_writeln("xrdp-sessvc: stopping X server"); - g_sigterm(x_pid); - ret = g_waitpid(x_pid); - - while ((ret == 0) && !g_term) - { - ret = g_waitpid(x_pid); - g_sleep(1); - } - - g_writeln("xrdp-sessvc: clean exit"); - g_deinit(); - return 0; -} |