summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0254c7a)
raw | patch | inline | side by side (parent: 0254c7a)
author | Alexander Wirt <formorer@formorer.de> | |
Sat, 9 Dec 2006 18:43:25 +0000 (19:43 +0100) | ||
committer | Florian Forster <octo@huhu.verplant.org> | |
Sun, 10 Dec 2006 11:11:16 +0000 (12:11 +0100) |
The plugin now tries to reconnect if connection isn't possible
(default is 3 tries), this can adjusted with the collectd_retries
config parameter.
Signed-off-by: Alexander Wirt <formorer@formorer.de>
(default is 3 tries), this can adjusted with the collectd_retries
config parameter.
Signed-off-by: Alexander Wirt <formorer@formorer.de>
contrib/SpamAssassin/Collectd.pm | patch | blob | history |
index efc356f2fff8ccfec49ed25137abfc839bcc50cb..292d4d0a83efa45602d221341aab89c4c26460d6 100644 (file)
#!/usr/bin/perl
-# $Id: Collectd.pm 7 2006-12-07 06:13:12Z formorer $
=head1 NAME
use strict;
use bytes;
use warnings;
+use Time::HiRes qw(usleep);
use IO::Socket;
use vars qw(@ISA);
$Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC,
});
+ push (@cmds, {
+ setting => 'collectd_retries',
+ default => 3,
+ type =>
+ $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC,
+ });
+
+
$conf->{parser}->register_commands(\@cmds);
}
my $message_status = $params->{permsgstatus};
#create new connection to our socket
eval {
- local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
+ local $SIG{ALRM} = sub { die "Sending to collectd timed out.\n" }; # NB: \n required
#generate a timeout
alarm $self->{main}->{conf}->{collectd_timeout};
- my $sock = new IO::Socket::UNIX ( $self->{main}->{conf}->{collectd_socket});
- # debug some informations if collectd is not running or anything else went
- # wrong
- if ( ! $sock ) {
- dbg("collect: could not connect to " .
- $self->{main}->{conf}->{collectd_socket} . ": $! - collectd plugin
- disabled");
- return 0;
+ my $sock;
+ #try at least $self->{main}->{conf}->{collectd_retries} to get a
+ #connection
+ for (my $i = 0; $i < $self->{main}->{conf}->{collectd_retries} ; ++$i) {
+ last if $sock = new IO::Socket::UNIX
+ ($self->{main}->{conf}->{collectd_socket});
+ #sleep a random value between 0 and 50 microsecs to try for a new
+ #thread
+ usleep(int(rand(50)));
}
+
+ die("could not connect to " .
+ $self->{main}->{conf}->{collectd_socket} . ": $! - collectd plugin disabled") unless $sock;
+
$sock->autoflush(1);
my $score = $message_status->{score};
close($sock);
alarm 0;
};
- if ($@ eq "alarm\n") {
- info("Connection to collectd timed out");
+ if ($@) {
+ my $message = $@;
+ chomp($message);
+ info("collectd: $message");
return -1;
}
}