ddclient/svn/patches/mail-on-kill.patch
wimpunk 03838725fc Added mail-on-kill patch to patches section
git-svn-id: svn+ssh://svn.code.sf.net/p/ddclient/code/trunk@84 3873ddee-7413-0410-b6c4-c2c57c1ab35a
2008-02-08 10:08:24 +00:00

44 lines
1.3 KiB
Diff

#
# patch created with `svn diff -r82 . > patches/mail-on-kill.patch`
# on Fri Feb 8 11:03:01 CET 2008
# applied on r82
#
# This patch prevent ddclient sending out mail when interrupted by
# a TERM signal. It still sends mail ended by a KILL signal.
#
Index: ddclient
===================================================================
--- ddclient (revision 82)
+++ ddclient (working copy)
@@ -602,8 +602,10 @@
}
my $caught_hup = 0;
my $caught_term = 0;
+my $caught_kill = 0;
$SIG{'HUP'} = sub { $caught_hup = 1; };
$SIG{'TERM'} = sub { $caught_term = 1; };
+$SIG{'KILL'} = sub { $caught_kill = 1; };
if (opt('daemon') && !opt('force')) {
$SIG{'CHLD'} = 'IGNORE';
my $pid = fork;
@@ -665,7 +667,7 @@
sendmail();
my $left = $daemon;
- while (($left > 0) && !$caught_hup && !$caught_term) {
+ while (($left > 0) && !$caught_hup && !$caught_term && !$caught_kill) {
my $delay = $left > 10 ? 10 : $left;
$0 = sprintf("%s - sleeping for %s seconds", $program, $left);
@@ -681,9 +683,9 @@
} else {
$result = $result eq 'OK' ? 0 : 1;
}
-} while ($daemon && !$result && !$caught_term);
+} while ($daemon && !$result && !$caught_term && !$caught_kill);
-warning("caught SIGTERM; exiting") if $caught_term;
+warning("caught SIGKILL; exiting") if $caught_kill;
unlink_pid();
sendmail();