Hi all:

In message <[email protected]>,
Risto Vaarandi writes:
>I have released SEC-2.5.beta2 that can be downloaded from:
>http://prdownloads.sourceforge.net/simple-evcorr/sec-2.5.beta2.tar.gz

I have enclosed a patch that I have found useful. It allows you to
change the SEC debug level dynamically. For each SIGINT that is
received by SEC, the debug level will increment by 1 and wrap around
to 1 if it exceeds 6.

It is enabled only if STDIN is not a terminal (e.g. it's running as a
daemon, or under nohup etc).

This is really useful when adding new rules as it stops me from having
to stop and restart SEC (so I don't loose state) when I am debugging a
new ruleset.

The output in the log if the hander is enabled is:

   Wed Jan 21 13:42:02 2009: Installing SIGINT handler to change debug level.

and if not enabled (because stdin is a terminal):

  Wed Jan 21 13:43:32 2009: Not installing SIGINT handler to change debug level.

and on every kill -INT <pid>

  Wed Jan 21 13:42:26 2009: Int signal received. Debug set to 3
  Wed Jan 21 13:42:43 2009: Int signal received. Debug set to 4
  ...
  Wed Jan 21 13:44:27 2009: Int signal received. Debug set to 6
  Wed Jan 21 13:44:28 2009: Int signal received. Debug set to 1

Can this be applied to SEC before the next release?

Thanks.
--
                                -- rouilj
John Rouillard
===========================================================================
My employers don't acknowledge my existence much less my opinions.


--- ../sec-2.5.beta2.orig/sec.pl        2009-01-13 07:31:33.000000000 -0500
+++ sec.pl      2009-01-21 13:34:32.159525300 -0500
@@ -8055,6 +8055,14 @@
 
 }               
 
+sub int_handler {
+  # allow kill -INT to change the debuglevel from 1-6
+  $SIG{INT} = \&int_handler;
+  $debuglevel += 1;
+  if ($debuglevel > 6) { $debuglevel = 1 };
+  log_msg(LOG_CRIT, "Int signal received. Debug set to $debuglevel");
+}
+
 
 # Parameters: -
 # Action: on arrival of SIGTERM clean things up and exit
@@ -8352,6 +8360,16 @@
 $openlog = 0;
 $SIG{USR2} = \&usr2_handler;
 
+# Check to see if we are under control of a terminal
+# If not hijack SIGINT to increment and roll over debug level 1...6
+# at runtime.
+if (! -t STDIN) {
+  $SIG{INT} = \&int_handler; 
+  log_msg(LOG_CRIT, "Installing SIGINT handler to change debug level.");
+} else {
+  log_msg(LOG_CRIT, "Not installing SIGINT handler to change debug level.");
+}
+
 $terminate = 0;
 $SIG{TERM} = \&term_handler;
 
------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Simple-evcorr-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to