diff options
author | jsorg71 <jsorg71> | 2008-11-25 04:00:53 +0000 |
---|---|---|
committer | jsorg71 <jsorg71> | 2008-11-25 04:00:53 +0000 |
commit | a6bc4886784c3c727f453bc5a56eae143314c767 (patch) | |
tree | 8f4fb4cdf13d80854b83c343cee858afcf2a3b26 /sesman/sessvc | |
parent | b768e8fb5dfbde9d304e0b160e5e265c9bc5183e (diff) | |
download | xrdp-proprietary-a6bc4886784c3c727f453bc5a56eae143314c767.tar.gz xrdp-proprietary-a6bc4886784c3c727f453bc5a56eae143314c767.zip |
move sessvc to a sub-directory
Diffstat (limited to 'sesman/sessvc')
-rw-r--r-- | sesman/sessvc/Makefile | 29 | ||||
-rw-r--r-- | sesman/sessvc/sessvc.c | 67 |
2 files changed, 96 insertions, 0 deletions
diff --git a/sesman/sessvc/Makefile b/sesman/sessvc/Makefile new file mode 100644 index 00000000..39905e94 --- /dev/null +++ b/sesman/sessvc/Makefile @@ -0,0 +1,29 @@ + +SESSVCOBJ = sessvc.o os_calls.o log.o + +CFGDIR = /etc/xrdp +PIDDIR = /var/run +LIBDIR = /usr/local/lib/xrdp +SBINDIR = /usr/local/sbin + +CFLAGS = -Wall -O2 -I../../common +LDFLAGS = -lpthread -ldl +C_OS_FLAGS = $(CFLAGS) -c +CC = gcc + +all: xrdp-sessvc + +xrdp-sessvc: $(SESSVCOBJ) + $(CC) $(LDFLAGS) -o xrdp-sessvc $(SESSVCOBJ) + +clean: + rm -f $(SESSVCOBJ) xrdp-sessvc + +install: + install xrdp-sessvc $(SBINDIR)/xrdp-sessvc + +os_calls.o: ../../common/os_calls.c + $(CC) $(C_OS_FLAGS) ../../common/os_calls.c + +log.o: ../../common/log.c + $(CC) $(C_OS_FLAGS) -DLOG_ENABLE_THREAD ../../common/log.c diff --git a/sesman/sessvc/sessvc.c b/sesman/sessvc/sessvc.c new file mode 100644 index 00000000..3d24070e --- /dev/null +++ b/sesman/sessvc/sessvc.c @@ -0,0 +1,67 @@ +/* + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + xrdp: A Remote Desktop Protocol server. + Copyright (C) Jay Sorg 2005-2008 +*/ + +/** + * + * @file sessvc.c + * @brief Session supervisor + * @author Simone Fedele + * + */ + +#include "os_calls.h" +#include "arch.h" +#include "log.h" + +#include <sys/types.h> +#include <errno.h> + +pid_t wm_pid; +pid_t x_pid; + +void DEFAULT_CC +signal_handler(int sig) +{ + g_sigterm(x_pid); + g_sigterm(wm_pid); + g_exit(0); +} + +/******************************************************************************/ +int DEFAULT_CC +main(int argc, char** argv) +{ + int ret=0; + + x_pid = g_atoi(argv[1]); + wm_pid = g_atoi(argv[2]); + + g_printf("\n[sessvc] Setting signal handler\n"); + g_signal(9, signal_handler); /* SIGKILL */ + g_signal(15, signal_handler); /* SIGTERM */ + g_signal(17, signal_handler); /* SIGCHLD */ + + g_printf("\n[sessvc] Waiting for X (pid %d) and WM (pid %d)\n", x_pid, wm_pid); + + ret = g_waitpid(wm_pid); + g_sigterm(x_pid); + + g_printf("\n[sessvc] WM is dead (waitpid said %d, errno is %d). exiting...\n", ret, errno); + return 0; +} |