[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