summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGES6
-rw-r--r--HACKING14
-rw-r--r--configure.ac2
-rw-r--r--lib/Smokeping.pm16
-rw-r--r--lib/Smokeping/probes/SipSak.pm15
-rwxr-xr-xrelease-smokeping.sh2
6 files changed, 46 insertions, 9 deletions
diff --git a/CHANGES b/CHANGES
index ed31fe7..bef8953 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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
diff --git a/HACKING b/HACKING
new file mode 100644
index 0000000..6f62af4
--- /dev/null
+++ b/HACKING
@@ -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 ?