mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-12 20:16:49 +02:00
ids-functions.pl: Allow "3" download attempts for each provider before fail.
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
This commit is contained in:
@@ -256,6 +256,10 @@ sub downloadruleset ($) {
|
||||
# If no provider is given default to "all".
|
||||
$provider //= 'all';
|
||||
|
||||
# The amount of download attempts before giving up and
|
||||
# logging an error.
|
||||
my $max_dl_attempts = 3;
|
||||
|
||||
# Hash to store the providers and access id's, for which rules should be downloaded.
|
||||
my %sheduled_providers = ();
|
||||
|
||||
@@ -364,19 +368,33 @@ sub downloadruleset ($) {
|
||||
# Pass the requested url to the downloader.
|
||||
my $request = HTTP::Request->new(GET => $url);
|
||||
|
||||
# Perform the request and save the output into the tmpfile.
|
||||
my $response = $downloader->request($request, $tmpfile);
|
||||
my $dl_attempt = 1;
|
||||
my $response;
|
||||
|
||||
# Check if there was any error.
|
||||
unless ($response->is_success) {
|
||||
# Obtain error.
|
||||
my $error = $response->content;
|
||||
# Download and retry on failure.
|
||||
while ($dl_attempt <= $max_dl_attempts) {
|
||||
# Perform the request and save the output into the tmpfile.
|
||||
$response = $downloader->request($request, $tmpfile);
|
||||
|
||||
# Log error message.
|
||||
&_log_to_syslog("Unable to download the ruleset. \($error\)");
|
||||
# Check if the download was successfull.
|
||||
if($response->is_success) {
|
||||
# Break loop.
|
||||
last;
|
||||
|
||||
# Return "1" - false.
|
||||
return 1;
|
||||
# Check if we ran out of download re-tries.
|
||||
} elsif ($dl_attempt eq $max_dl_attempts) {
|
||||
# Obtain error.
|
||||
my $error = $response->content;
|
||||
|
||||
# Log error message.
|
||||
&_log_to_syslog("Unable to download the ruleset. \($error\)");
|
||||
|
||||
# Return "1" - false.
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Increase download attempt counter.
|
||||
$dl_attempt++;
|
||||
}
|
||||
|
||||
# Obtain the connection headers.
|
||||
|
||||
Reference in New Issue
Block a user