diff options
-rw-r--r-- | CHANGES | 6 | ||||
-rw-r--r-- | HACKING | 14 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | lib/Smokeping.pm | 16 | ||||
-rw-r--r-- | lib/Smokeping/probes/SipSak.pm | 15 | ||||
-rwxr-xr-x | release-smokeping.sh | 2 |
6 files changed, 46 insertions, 9 deletions
@@ -1,3 +1,9 @@ +* Fork alert handler scripts so that sokeping does not block + +2012/02/07 -- released version 2.6.8 + +* Make SipSak work with sip services actually implementing OPTIONS -- tobi + 2012/01/11 -- released version 2.6.7 * be more careful in handling input from the web to prevent xss. Thanks to @@ -0,0 +1,14 @@ +SmokePing Hacking +----------------- + +The source of SmokePing lives on + + https://github.com/oetiker/SmokePing + +If you come up with new and cool features, send a pull request. + +If you find a bug, report it on GitHub as an issue. + +If you are planning to implement something large, +please discuss it on the smokeping-users mailinglist. + diff --git a/configure.ac b/configure.ac index 31d51e2..2727b11 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ # -AC_INIT([smokeping],[2.6.7],[tobi@oetiker.ch]) +AC_INIT([smokeping],[2.6.8],[tobi@oetiker.ch]) AC_PREREQ([2.59]) AC_CONFIG_AUX_DIR(conftools) AC_CANONICAL_TARGET 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:(.+)/ ) { diff --git a/lib/Smokeping/probes/SipSak.pm b/lib/Smokeping/probes/SipSak.pm index 9e6c3a2..25f1649 100644 --- a/lib/Smokeping/probes/SipSak.pm +++ b/lib/Smokeping/probes/SipSak.pm @@ -73,14 +73,23 @@ sub pingone { shift @reply; my $filter = '.*'; + $self->do_debug("SipSak: got ".(scalar @reply)." replies, expected $pingcount"); if (scalar @reply > $pingcount){ - $filter = $keep eq 'yes' ? 'final' : 'provisional'; + $filter = $keep eq 'yes' ? 'final received' : 'provisional received'; } for my $item (@reply){ - next unless $item =~ /$filter/; - if (/^(?:\s+and|\sreceived\safter)\s(\d+(?:\.\d+))\sms\s/){ + $self->do_debug("SipSak: looking at '$item'"); + if (not $item =~ /$filter/){ + $self->do_debug("SipSak: skipping as there was not match for $filter"); + next; + } + if ($item =~ /(?:\sand|\sreceived\safter)\s(\d+(?:\.\d+)?)\sms\s/){ + $self->do_debug("SipSak: match"); push @times,$1/1000; } + else { + $self->do_debug("SipSak: no match"); + } } return sort { $a <=> $b } @times; } diff --git a/release-smokeping.sh b/release-smokeping.sh index a459d15..c9c725b 100755 --- a/release-smokeping.sh +++ b/release-smokeping.sh @@ -7,7 +7,7 @@ aclocal autoconf automake -a -c ./setup/build-perl-modules.sh /tmp/smokeping-$$-build/thirdparty -./configure --enable-maintainer-mode --prefix=/tmp/smokeping-$$-build PERL5LIB=/scratch/oetiker/rrd-dev/lib/perl +./configure --enable-maintainer-mode --prefix=/tmp/smokeping-$$-build PERL5LIB=/scratch/rrd-trunk/lib/perl make install make dist echo READY TO SYNC ? |