From 534b2691cdc8822d92709d16d5be21950c484fe1 Mon Sep 17 00:00:00 2001 From: ilsimo Date: Thu, 6 Oct 2005 19:25:29 +0000 Subject: [PATCH] Adding sig.* --- sesman/sig.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sesman/sig.h | 38 ++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 sesman/sig.c create mode 100644 sesman/sig.h diff --git a/sesman/sig.c b/sesman/sig.c new file mode 100644 index 00000000..6696735e --- /dev/null +++ b/sesman/sig.c @@ -0,0 +1,82 @@ +/* + 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 + + session manager + linux only + + sig.c: signal handling code + +*/ + +/** + * + * @file: signal handling functions + * + */ + +#include "sesman.h" + +extern int g_sck; +extern int g_pid; +extern struct sesman_config g_cfg; + +/** + * + * Shuts down sesman + * + * @param sig The received signal + * + */ +void DEFAULT_CC +sig_sesman_shutdown(int sig) +{ + if (g_getpid() != g_pid) + { + return; + } + g_printf("shutting down\n\r"); + g_printf("signal %d pid %d\n\r", sig, g_getpid()); + g_tcp_close(g_sck); +} + +/** + * + * Reloads sesman config + * + * @param sig The received signal + * + */ +void DEFAULT_CC +sig_sesman_reload_cfg(int sig) +{ + struct sesman_config cfg; + + if (g_getpid() != g_pid) + { + return; + } + g_printf("sesman: received SIGHUP\n\r"); + if (config_read(&cfg) != 0) + { + g_printf("sesman: error reading config. keeping old cfg.\n\r"); + return; + } + g_cfg = cfg; + g_printf("sesman: configuration reloaded\n\r"); +} + diff --git a/sesman/sig.h b/sesman/sig.h new file mode 100644 index 00000000..81687437 --- /dev/null +++ b/sesman/sig.h @@ -0,0 +1,38 @@ +/* + 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 + + session manager + linux only + + sig.h: signal handling code declarations + +*/ + +#ifndef SIG_H +#define SIG_H + +/******************************************************************************/ +void DEFAULT_CC +sig_sesman_shutdown(int sig); + +/******************************************************************************/ +void DEFAULT_CC +sig_sesman_reload_cfg(int sig); + +#endif +