summaryrefslogtreecommitdiffstats
path: root/lib/Smokeping.pm
diff options
context:
space:
mode:
authorDarren Murphy <darren@victoriajd.com>2012-03-23 06:25:28 +0100
committerDarren Murphy <darren@victoriajd.com>2012-03-23 06:25:28 +0100
commit11cf1d954dc92e4d4f2a8dc8fed729f0ef04bf7a (patch)
treeedc8bc12c004e8bb6a2a5908f2174ac0643cecf9 /lib/Smokeping.pm
parent8e9692b5f8a39eea12521f7ae9ad9b62c28ae6f5 (diff)
parent79b6c9346c950d0b3e22dc9ba337bbcdcbed052e (diff)
downloadsmokeping-11cf1d954dc92e4d4f2a8dc8fed729f0ef04bf7a.tar.gz
smokeping-11cf1d954dc92e4d4f2a8dc8fed729f0ef04bf7a.tar.xz
Merge remote branch 'tobi/master' into integration
Diffstat (limited to 'lib/Smokeping.pm')
-rw-r--r--lib/Smokeping.pm16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/Smokeping.pm b/lib/Smokeping.pm
index b15880b..bba2a6b 100644
--- a/lib/Smokeping.pm
+++ b/lib/Smokeping.pm
@@ -1874,10 +1874,18 @@ sub check_alerts {
next unless $addr;
if ( $addr =~ /^\|(.+)/) {
my $cmd = $1;
- if ($edgetrigger) {
- system $cmd,$_,$line,$loss,$rtt,$tree->{host}, ($what =~/raise/);
- } else {
- system $cmd,$_,$line,$loss,$rtt,$tree->{host};
+ # fork them in case they
+ unless ($pid = fork) {
+ unless (fork) {
+ $SIG{CHLD} = 'DEFAULT';
+ if ($edgetrigger) {
+ exec $cmd,$_,$line,$loss,$rtt,$tree->{host}, ($what =~/raise/);
+ } else {
+ exec $cmd,$_,$line,$loss,$rtt,$tree->{host};
+ }
+ die "exec failed!";
+ }
+ exit 0;
}
}
elsif ( $addr =~ /^snpp:(.+)/ ) {