[Initng-svn] r2991 - initng/plugins/daemon
svn at initng.thinktux.net
svn at initng.thinktux.net
Tue Feb 14 10:20:48 CET 2006
Author: jimmy
Date: Tue Feb 14 10:20:47 2006
New Revision: 2991
Modified:
initng/plugins/daemon/initng_daemon.c
Log:
Correctly TERM daemons now.
Modified: initng/plugins/daemon/initng_daemon.c
==============================================================================
--- initng/plugins/daemon/initng_daemon.c (original)
+++ initng/plugins/daemon/initng_daemon.c Tue Feb 14 10:20:47 2006
@@ -722,35 +722,58 @@
static void handle_DAEMON_KILL(active_db_h * daemon)
{
time_t n = time(0);
+ int timeout;
+ int elap;
+
+ /* get the KILL_TIMEOUT */
+ timeout=initng_active_db_get_int(&KILL_TIMEOUT, daemon);
+
+ /* Make sure we got an value */
+ if(timeout==0)
+ timeout = DEFAULT_KILL_TIMEOUT;
+
+ /* calculate time gone */
+ elap=n-daemon->time_current_state.tv_sec;
- if(n-daemon->time_current_state.tv_sec>DEFAULT_KILL_TIMEOUT)
+ /* check if its to mutch */
+ if(elap>=timeout)
{
- F_("Service %s DEFAULT_KILL_TIMEOUT reached!\n", daemon->name);
+ F_("Service %s KILL_TIMEOUT of %i seconds reached! (%i seconds passed), sending TERM signal.\n", daemon->name, timeout, elap);
+ kill_daemon(daemon, SIGTERM);
+
+ /* Set it to DAEMON_TERM state, monitoring that TERM signal is sent. */
+ if(!initng_common_mark_service(daemon, &DAEMON_TERM))
+ return;
+
+ /* make sure handle_DAEMON_TERM is run */
+ initng_global_set_sleep(DEFAULT_TERM_TIMEOUT);
+
return;
}
/* else */
-
initng_global_set_sleep(n-daemon->time_current_state.tv_sec);
-
-/* Here is when timeout of kill checked */
-
}
static void handle_DAEMON_TERM(active_db_h * daemon)
{
time_t n = time(0);
+ int elap=n-daemon->time_current_state.tv_sec;
- if(n-daemon->time_current_state.tv_sec>DEFAULT_TERM_TIMEOUT)
+ if(elap>=DEFAULT_TERM_TIMEOUT)
{
- F_("Service %s DEFAULT_KILL_TIMEOUT reached!\n", daemon->name);
+ F_("Service %s TERM_TIMEOUT of %i seconds reached! (%i seconds passed), sending another TERM signal.\n", daemon->name, DEFAULT_TERM_TIMEOUT, elap);
+ kill_daemon(daemon, SIGTERM);
+
+ /* make sure handle_DAEMON_TERM will be run */
+ initng_global_set_sleep(DEFAULT_TERM_TIMEOUT);
return;
}
- initng_global_set_sleep(n-daemon->time_current_state.tv_sec);
+ initng_global_set_sleep(elap);
-/* Here is timeout of term checked */
+ /* Here is timeout of term checked */
}
More information about the Initng-svn
mailing list