Support Net::DNS::Nameserver 1.42

In Net::DNS 1.42 $ns->main_loop no longer loops.  Use current methods
for starting the server, wait for SIGTERM then cleanup child processes
using $ns->stop_server(), then remove the pid file.
This commit is contained in:
Mark Andrews 2024-01-02 15:39:58 +11:00
parent f0e17a92a3
commit c2c59dea60
2 changed files with 28 additions and 4 deletions

View file

@ -22,9 +22,14 @@ my $pidf = new IO::File "ans.pid", "w" or die "cannot open pid file: $!";
print $pidf "$$\n" or die "cannot write pid file: $!";
$pidf->close or die "cannot close pid file: $!";
sub rmpid { unlink "ans.pid"; exit 1; };
sub term { };
$SIG{INT} = \&rmpid;
$SIG{TERM} = \&rmpid;
if ($Net::DNS::VERSION > 1.41) {
$SIG{TERM} = \&term;
} else {
$SIG{TERM} = \&rmpid;
}
my $localaddr = "10.53.0.3";
@ -128,4 +133,11 @@ my $ns = Net::DNS::Nameserver->new(
Verbose => $verbose,
);
$ns->main_loop;
if ($Net::DNS::VERSION >= 1.42) {
$ns->start_server();
select(undef, undef, undef, undef);
$ns->stop_server();
unlink "ans.pid";
} else {
$ns->main_loop;
}

View file

@ -22,9 +22,14 @@ my $pidf = new IO::File "ans.pid", "w" or die "cannot open pid file: $!";
print $pidf "$$\n" or die "cannot write pid file: $!";
$pidf->close or die "cannot close pid file: $!";
sub rmpid { unlink "ans.pid"; exit 1; };
sub term { };
$SIG{INT} = \&rmpid;
$SIG{TERM} = \&rmpid;
if ($Net::DNS::VERSION >= 1.42) {
$SIG{TERM} = \&term;
} else {
$SIG{TERM} = \&rmpid;
}
my $count = 0;
@ -73,4 +78,11 @@ my $ns = Net::DNS::Nameserver->new(
Verbose => $verbose,
);
$ns->main_loop;
if ($Net::DNS::VERSION >= 1.42) {
$ns->start_server();
select(undef, undef, undef, undef);
$ns->stop_server();
unlink "ans.pid";
} else {
$ns->main_loop;
}