Author: mturk Date: Mon Sep 6 08:10:26 2010 New Revision: 992966 URL: http://svn.apache.org/viewvc?rev=992966&view=rev Log: DAEMON-95 Patch provided by Mike Polek and Damien Raude-Morvan
Modified: commons/proper/daemon/trunk/RELEASE-NOTES.txt commons/proper/daemon/trunk/src/native/unix/native/jsvc-unix.c Modified: commons/proper/daemon/trunk/RELEASE-NOTES.txt URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/RELEASE-NOTES.txt?rev=992966&r1=992965&r2=992966&view=diff ============================================================================== --- commons/proper/daemon/trunk/RELEASE-NOTES.txt (original) +++ commons/proper/daemon/trunk/RELEASE-NOTES.txt Mon Sep 6 08:10:26 2010 @@ -15,6 +15,7 @@ follow the release early/release often m NEW FEATURES: +* DAEMON-95: Support log ration using SIGUSR1 (1.0.4) * DAEMON-138: Add --PidFile option to allow storing running process id. (1.0.3) * DAEMON-137: Add --LogJniMessages allowing to configure JNI verbose message logging. By default those messages were always logged. (1.0.3) @@ -41,7 +42,7 @@ NEW FEATURES: BUG FIXES: -1.0.4: +1.0.4: DAEMON-95 1.0.3: DAEMON-108, DAEMON-128, DAEMON-139, DAEMON-143, DAEMON-148, DAEMON-135, DAEMON-155, DAEMON-159, DAEMON-161, DAEMON-145, DAEMON-146, Modified: commons/proper/daemon/trunk/src/native/unix/native/jsvc-unix.c URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/unix/native/jsvc-unix.c?rev=992966&r1=992965&r2=992966&view=diff ============================================================================== --- commons/proper/daemon/trunk/src/native/unix/native/jsvc-unix.c (original) +++ commons/proper/daemon/trunk/src/native/unix/native/jsvc-unix.c Mon Sep 6 08:10:26 2010 @@ -54,13 +54,17 @@ pid_t controlled = 0; /* the c pid_t logger_pid = 0; /* the logger process pid */ static bool stopping = false; static bool doreload = false; +static bool doreopen = false; typedef void (*sighandler_t)(int); -static sighandler_t handler_int = NULL; -static sighandler_t handler_hup = NULL; -static sighandler_t handler_trm = NULL; +static sighandler_t handler_int = NULL; +static sighandler_t handler_usr1 = NULL; +static sighandler_t handler_hup = NULL; +static sighandler_t handler_trm = NULL; static int run_controller(arg_data *args, home_data *data, uid_t uid, gid_t gid); +static void set_output(char *outfile, char *errfile, bool redirectstdin, + char *procname); #ifdef OS_CYGWIN /* @@ -120,6 +124,10 @@ static void handler(int sig) doreload = true; } break; + case SIGUSR1: + log_debug("Caught SIGUSR1: Reopening logs"); + doreopen = true; + break; default: log_debug("Caught unknown signal %d", sig); break; @@ -360,6 +368,7 @@ static void controller(int sig) case SIGTERM: case SIGINT: case SIGHUP: + case SIGUSR1: log_debug("Forwarding signal %d to process %d", sig, controlled); kill(controlled, sig); signal(sig, controller); @@ -694,6 +703,7 @@ static int child(arg_data *args, home_da /* Install signal handlers */ handler_hup = signal_set(SIGHUP, handler); + handler_usr1 = signal_set(SIGUSR1, handler); handler_trm = signal_set(SIGTERM, handler); handler_int = signal_set(SIGINT, handler); controlled = getpid(); @@ -708,6 +718,10 @@ static int child(arg_data *args, home_da /* pause() is not threadsafe */ sleep(60); #endif + if(doreopen) { + doreopen = false; + set_output(args->outfile, args->errfile, args->redirectstdin, args->procname); + } } remove_tmp_file(args); log_debug("Shutdown or reload requested: exiting"); @@ -1029,6 +1043,7 @@ static int run_controller(arg_data *args SetTerm(cygwincontroller); #endif signal(SIGHUP, controller); + signal(SIGUSR1, controller); signal(SIGTERM, controller); signal(SIGINT, controller);