Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-Net-DNS for openSUSE:Factory checked in at 2022-10-16 16:08:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Net-DNS (Old) and /work/SRC/openSUSE:Factory/.perl-Net-DNS.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Net-DNS" Sun Oct 16 16:08:49 2022 rev:68 rq:1010987 version:1.35 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Net-DNS/perl-Net-DNS.changes 2022-06-18 22:05:29.595596730 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Net-DNS.new.2275/perl-Net-DNS.changes 2022-10-16 16:08:52.334706374 +0200 @@ -1,0 +2,6 @@ +Wed Oct 5 03:07:10 UTC 2022 - Tina M??ller <timueller+p...@suse.de> + +- updated to 1.35 + see /usr/share/doc/packages/perl-Net-DNS/Changes + +------------------------------------------------------------------- Old: ---- Net-DNS-1.34.tar.gz New: ---- Net-DNS-1.35.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Net-DNS.spec ++++++ --- /var/tmp/diff_new_pack.sA2v37/_old 2022-10-16 16:08:52.850707585 +0200 +++ /var/tmp/diff_new_pack.sA2v37/_new 2022-10-16 16:08:52.858707603 +0200 @@ -18,7 +18,7 @@ %define cpan_name Net-DNS Name: perl-Net-DNS -Version: 1.34 +Version: 1.35 Release: 0 License: MIT Summary: Perl Interface to the Domain Name System @@ -32,21 +32,32 @@ BuildRequires: perl(Digest::HMAC) >= 1.03 BuildRequires: perl(Digest::SHA) >= 5.23 BuildRequires: perl(Encode) >= 2.26 -BuildRequires: perl(ExtUtils::MakeMaker) >= 6.66 +BuildRequires: perl(Exporter) >= 5.63 +BuildRequires: perl(ExtUtils::MakeMaker) >= 6.48 +BuildRequires: perl(File::Find) >= 1.13 +BuildRequires: perl(File::Spec) >= 3.29 BuildRequires: perl(Getopt::Long) >= 2.43 +BuildRequires: perl(IO::File) >= 1.14 +BuildRequires: perl(IO::Socket) >= 1.3 BuildRequires: perl(IO::Socket::IP) >= 0.38 BuildRequires: perl(PerlIO) >= 1.05 -BuildRequires: perl(Scalar::Util) >= 1.25 +BuildRequires: perl(Scalar::Util) >= 1.19 +BuildRequires: perl(Test::Builder) >= 0.8 +BuildRequires: perl(Test::More) >= 0.8 BuildRequires: perl(Time::Local) >= 1.19 Requires: perl(Carp) >= 1.1 Requires: perl(Digest::HMAC) >= 1.03 Requires: perl(Digest::SHA) >= 5.23 Requires: perl(Encode) >= 2.26 +Requires: perl(Exporter) >= 5.63 +Requires: perl(File::Spec) >= 3.29 +Requires: perl(IO::File) >= 1.14 +Requires: perl(IO::Socket) >= 1.3 Requires: perl(IO::Socket::IP) >= 0.38 Requires: perl(PerlIO) >= 1.05 -Requires: perl(Scalar::Util) >= 1.25 +Requires: perl(Scalar::Util) >= 1.19 Requires: perl(Time::Local) >= 1.19 -Recommends: perl(Digest::BubbleBabble) >= 0.01 +Recommends: perl(Digest::BubbleBabble) >= 0.02 Recommends: perl(Net::LibIDN2) >= 1 %{perl_requires} ++++++ Net-DNS-1.34.tar.gz -> Net-DNS-1.35.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/Changes new/Net-DNS-1.35/Changes --- old/Net-DNS-1.34/Changes 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/Changes 2022-10-04 21:53:52.000000000 +0200 @@ -1,32 +1,42 @@ -$Id: Changes 1867 2022-05-30 10:07:36Z willem $ -*-text-*- +$Id: Changes 1882 2022-10-04 19:53:44Z willem $ -*-text-*- + + +**** 1.35 Oct 4, 2022 + + Improve SVCB error reporting. + +Fix rt.cpan.org #144328 + accept_reply test fails with matched consecutive "random" + generated packet->id + +Fix rt.cpan.org #144299 + Spelling errors. **** 1.34 May 30, 2022 Improve robustness of EDNS option compose/decompose functions. - Simplify code in Makefile.PL. Fix rt.cpan.org #142426 - Avoid "Useless use of a constant in void context" warning. **** 1.33 Dec 16, 2021 Fix rt.cpan.org #137768 - Test t/05-SVCB.t on Perl 5.18.0 fails with deep recursion. +Fix rt.cpan.org #144136/#132921 + $resolver->send wrongly overwrites RD flag in user's packet. + **** 1.32 Jul 16, 2021 Text: Offer both Unicode and escaped-ASCII strings. - Add LICENSE file to comply with Fedora/RedHat announcement. Fix rt.cpan.org #136666 - Net::DNS::RR::ZoneFile parser erroneously strips line terminators in quoted string forming part of multiline RR. @@ -59,7 +69,6 @@ **** 1.27 Sep 11, 2020 Fix rt.cpan.org #133203 - Net::DNS::RR::LOC erroneously strips non default values from string representation @@ -69,7 +78,6 @@ Add HTTPS/SVCB packages. Fix rt.cpan.org #132921 - EDNS OPT handling @@ -81,7 +89,6 @@ **** 1.24 May 27, 2020 Accept TSIG key generated by BIND tsig-keygen. - Add Net::DNS::RR::AMTRELAY package. @@ -90,18 +97,15 @@ Deprecate 2-argument form of TSIG create(). Fix rt.cpan.org #132170 - [Documentation] Problems with TSIG on ddns update. Fix rt.cpan.org #131906 - Undefined errorstring/warning when axfr fails **** 1.22 Feb 13, 2020 Fix rt.cpan.org #131579 - Parse issue in Net::DNS::RR->token Feature @@ -111,36 +115,26 @@ **** 1.21 Aug 30, 2019 Fix error report for non-existent or recursive zone file $INCLUDE. - Emit one deprecation warning on invocation of obsolete method. - Rework OPT.pm EDNS0 option construction. - Remove obsolete Net::DNS::RR::DLV package. - Add Net::DNS::RR::ZONEMD package. Fix rt.cpan.org #128901 - background TCP query logic expects to read entire response at once **** 1.20 Mar 22, 2019 TSIG MAC representation changed to Base64 (align with BIND). - Update Parameters.pm to resync with IANA registry. - Refactor resolver test scripts. - Revise documentation examples to use AAAA instead of A records. Fix rt.cpan.org #128081 - Recurse.pm fails to resolve domain "kickboxingireland.ie" Fix rt.cpan.org #127307 - Provide a more informative exception report if application code has no "use Net::DNS::SEC" declaration but nevertheless attempts to invoke the DNSSEC sign or verify features. @@ -151,11 +145,9 @@ Show structure of EDNS options using Perl-like syntax. Fix rt.cpan.org #127557 - Net::DNS::Resolver::Base should use 3 args open Fix rt.cpan.org #127182 - Incorrect logic can cause DNS search to emit fruitless queries. @@ -166,26 +158,21 @@ and the entire reply packet received from a nameserver. Fix rt.cpan.org #127018 - Net::DNS::ZoneFile->parse() fails if include directory specified. Fix rt.cpan.org #127012 - DNS resolution broken when options ndots used in /etc/resolv.conf **** 1.17 Jul 25, 2018 Fix rt.cpan.org #125890 - AXFR: 1 record per packet responses. Fix rt.cpan.org #125889 - New NSEC3 for empty non-terminal leaves type bitmap undefined. Fix rt.cpan.org #125882 - RDATA name compression pointer calculated incorrectly. @@ -204,7 +191,6 @@ IO::Socket::INET6 removed from recommended module metadata. IPv6 requires IO::Socket::IP which is now a core package. - No requirement to escape @ in unquoted contiguous string. @@ -219,19 +205,16 @@ **** 1.14 Dec 15, 2017 Fix rt.cpan.org #123702 - 'use base' should not be used in packages with several subpackages defined Fix rt.cpan.org #123676 - Net::DNS::Nameserver malformed message on big axfr **** 1.13 Oct 18, 2017 Feature IDN query support - Queries for domain names containing non-ASCII characters are now possible on Unicode platforms using CPAN Net::LibIDN2 @@ -239,11 +222,9 @@ **** 1.12 Aug 18, 2017 Fix rt.cpan.org #122586 - Persistent UDP reports false timeouts Fix rt.cpan.org #122352 - bgsend(): TCP retry can stall for IO::Socket::IP before 0.38 Feature @@ -253,7 +234,6 @@ **** 1.11 Jun 26, 2017 Fix rt.cpan.org #122138 - Send a UDP query with udppacketsize=512 Feature @@ -264,13 +244,11 @@ **** 1.10 May 5, 2017 Fix rt.cpan.org #120748 - Net::DNS::Resolver::MSWin32 critical issue Thanks to Dmytro Zagashev for his valuable assistance during the investigation which exposed five distinct issues. Feature rt.cpan.org #18819 - Perl 5.22.0 puts EBCDIC character encoding back on the agenda. Thanks to Yaroslav Kuzmin for successful test build on os390. @@ -278,59 +256,47 @@ **** 1.09 March 24, 2017 Fix rt.cpan.org #120542 - Fails tests when no "." in @INC Fix rt.cpan.org #120470 - Fragmented TCP length not correctly reassembled Feature rt.cpan.org #75357 - Add mechanism to encode/decode EDNS option octet strings **** 1.08 February 20, 2017 -Fix rt.cpan.org #120208 + Discontinue support for pre-5.6 perl + Remove pre-5.6 workarounds and outdated language features +Fix rt.cpan.org #120208 Unable to install 1.07 in local::lib environment Feature rt.cpan.org #119679 - Net::DNS::Nameserver: UpdateHandler for responding to UPDATE packets Feature rt.cpan.org #75357 - Net::DNS::Nameserver: optionmask (similar to headermask) added to allow user to set EDNS options in reply packet -Discontinue support for pre-5.6 perl - - Remove pre-5.6 workarounds and outdated language features - **** 1.07 December 29, 2016 Fix rt.cpan.org #118598/#108908 - Serious Makefile.PL issues "make install" now suppressed if pre-1.01 version detected Fix rt.cpan.org #115558 - Net::DNS::Nameserver does not allow EDNS replies Fix rt.cpan.org #114917 - Net::DNS::ZoneFile fails to parse mixed case mnemonics Fix rt.cpan.org #114876 - Use of uninitialized value in lc at MSWin32.pm line 77 Fix rt.cpan.org #114819 - Net::DNS fails to compile with taint checks enabled Feature @@ -341,39 +307,31 @@ **** 1.06 May 27, 2016 Fix rt.cpan.org #114918 - Net::DNS::ZoneFile fails when unnamed RR follows $ORIGIN Fix rt.cpan.org #114351 - Case sensitive compression breaks resolver->nameservers() Fix rt.cpan.org #113579 - Net::DNS::Resolver dies on scoped IPv6 nameserver address Fix rt.cpan.org #113020 - Resolve::Recurse Hangs Fix rt.cpan.org #112860 - improperly terminated AXFR at t/08-IPv4.t line 446. **** 1.05 March 7, 2016 Fix rt.cpan.org #111559 - 1.04: TSIG not working anymore (TSIG.pm) Fix rt.cpan.org #108908 - Installing recent version gets shadowed by old version. Warnings added to Makefile.PL and t/00-version.t. Fix rt.cpan.org #66900 - Net::DNS::Async unable to retry truncated UDP using TCP because of limitations in Net::DNS. @@ -381,61 +339,48 @@ **** 1.04 December 8, 2015 Fix rt.cpan.org #109183 - Semantics of "retry" and "retrans" options has changed with 1.03 Fix rt.cpan.org #109152 - Deprecated method make_query_packet breaks calling code Fix rt.cpan.org #109135 - Resolver behaves differently with long and short IPv6 address format Fix rt.cpan.org #108745 - Net::DNS::Resolver bgsend **** 1.03 November 6, 2015 Fix rt.cpan.org #107897 - t/10-recurse.t freezes, never completes Fix rt.cpan.org #101978 - Update Net::DNS to use IO::Socket::IP Fix rt.cpan.org #84375 - Timeout doesn't work with bgsend/bgread Fix rt.cpan.org #47050 - persistent sockets for Resolver::bg(send|read|isready) Fix rt.cpan.org #15515 - bgsend on TCP **** 1.02 September 16, 2015 Fix rt.cpan.org #107052 - suppress messages: Can't locate Net/DNS/Resolver/linux.pm Fix rt.cpan.org #106916 - Dependency on MIME::Base32 makes Net::DNS not installable on MSWin32 Fix rt.cpan.org #106565 - Net::DNS::Resolver::Recurse and IPv6 Reverse DNS Fix rt.cpan.org #105808 - Version test for Pod::Test is broken @@ -447,23 +392,18 @@ to enable the signature generation and verification functions. Fix rt.cpan.org #105491 - Can't call method "zclass" on an undefined value at ... Net/DNS/Packet.pm line 474 Fix rt.cpan.org #105421 - Dead link in Net::DNS::FAQ Fix rt.cpan.org #104657 - Wrong split on Cygwin Fix rt.cpan.org #102810 - Dynamic update: rr_add overrides ttl of zero Fix rt.cpan.org #102809 - CAA broken @@ -785,8 +725,7 @@ to fail silently when creating a TSIG signed packet. Fix rt.cpan.org #81869 - - The rr_del auxilliary function broken by a conflicting change + The rr_del auxiliary function broken by a conflicting change in the RR.pm string parser. Note the ambiguous use of ANY, which may stand for CLASS255 or TYPE255 depending upon the argument string presented. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/META.json new/Net-DNS-1.35/META.json --- old/Net-DNS-1.34/META.json 2022-05-30 12:08:05.000000000 +0200 +++ new/Net-DNS-1.35/META.json 2022-10-04 21:54:04.000000000 +0200 @@ -29,15 +29,15 @@ }, "configure" : { "requires" : { - "ExtUtils::MakeMaker" : "6.66", + "ExtUtils::MakeMaker" : "6.48", "Getopt::Long" : "2.43", - "IO::File" : "1.08", + "IO::File" : "1.14", "IO::Socket::IP" : "0.38" } }, "runtime" : { "recommends" : { - "Digest::BubbleBabble" : "0.01", + "Digest::BubbleBabble" : "0.02", "Net::LibIDN2" : "1" }, "requires" : { @@ -46,30 +46,31 @@ "Digest::MD5" : "2.13", "Digest::SHA" : "5.23", "Encode" : "2.26", - "Exporter" : "5.56", - "File::Spec" : "0.86", - "IO::File" : "1.08", - "IO::Select" : "1.14", - "IO::Socket" : "1.26", + "Exporter" : "5.63", + "File::Spec" : "3.29", + "IO::File" : "1.14", + "IO::Select" : "1.17", + "IO::Socket" : "1.3", "IO::Socket::IP" : "0.38", "MIME::Base64" : "2.13", "PerlIO" : "1.05", - "Scalar::Util" : "1.25", + "Scalar::Util" : "1.19", "Time::Local" : "1.19", "perl" : "5.008009" } }, "test" : { "requires" : { - "File::Find" : "1.05", - "File::Spec" : "0.86", - "IO::File" : "1.08", - "Test::Builder" : "0", - "Test::More" : "0" + "ExtUtils::MakeMaker" : "0", + "File::Find" : "1.13", + "File::Spec" : "3.29", + "IO::File" : "1.14", + "Test::Builder" : "0.8", + "Test::More" : "0.8" } } }, "release_status" : "stable", - "version" : "1.34", + "version" : "1.35", "x_serialization_backend" : "JSON::PP version 4.08" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/META.yml new/Net-DNS-1.35/META.yml --- old/Net-DNS-1.34/META.yml 2022-05-30 12:08:05.000000000 +0200 +++ new/Net-DNS-1.35/META.yml 2022-10-04 21:54:04.000000000 +0200 @@ -6,15 +6,15 @@ - 'Michael Fuhr' build_requires: ExtUtils::MakeMaker: '0' - File::Find: '1.05' - File::Spec: '0.86' - IO::File: '1.08' - Test::Builder: '0' - Test::More: '0' + File::Find: '1.13' + File::Spec: '3.29' + IO::File: '1.14' + Test::Builder: '0.8' + Test::More: '0.8' configure_requires: - ExtUtils::MakeMaker: '6.66' + ExtUtils::MakeMaker: '6.48' Getopt::Long: '2.43' - IO::File: '1.08' + IO::File: '1.14' IO::Socket::IP: '0.38' dynamic_config: 1 generated_by: 'ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version 2.150010' @@ -28,7 +28,7 @@ - t - inc recommends: - Digest::BubbleBabble: '0.01' + Digest::BubbleBabble: '0.02' Net::LibIDN2: '1' requires: Carp: '1.1' @@ -36,16 +36,16 @@ Digest::MD5: '2.13' Digest::SHA: '5.23' Encode: '2.26' - Exporter: '5.56' - File::Spec: '0.86' - IO::File: '1.08' - IO::Select: '1.14' - IO::Socket: '1.26' + Exporter: '5.63' + File::Spec: '3.29' + IO::File: '1.14' + IO::Select: '1.17' + IO::Socket: '1.3' IO::Socket::IP: '0.38' MIME::Base64: '2.13' PerlIO: '1.05' - Scalar::Util: '1.25' + Scalar::Util: '1.19' Time::Local: '1.19' perl: '5.008009' -version: '1.34' +version: '1.35' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/Makefile.PL new/Net-DNS-1.35/Makefile.PL --- old/Net-DNS-1.34/Makefile.PL 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/Makefile.PL 2022-10-04 21:53:52.000000000 +0200 @@ -1,40 +1,41 @@ # -# $Id: Makefile.PL 1864 2022-04-14 15:18:49Z willem $ -*-perl-*- +# $Id: Makefile.PL 1875 2022-09-23 13:41:03Z willem $ -*-perl-*- # use 5.008009; use strict; use warnings; use ExtUtils::MakeMaker; -my $MM = $ExtUtils::MakeMaker::VERSION; my $distro = 'Net::DNS'; my $module = join '/', 'lib', split /::/, "$distro.pm"; -my @author = ( 'Dick Franks', 'Olaf Kolkman', 'Michael Fuhr' ); +my $author = ['Dick Franks', 'Olaf Kolkman', 'Michael Fuhr']; +$author = join ', ', @$author if $ExtUtils::MakeMaker::VERSION < 6.58; # See perldoc ExtUtils::MakeMaker for details of how to influence # the contents of the Makefile that is written. my %metadata = ( - NAME => "$distro", - VERSION_FROM => "$module", - ABSTRACT_FROM => "$module", - AUTHOR => $MM < 6.58 ? "$author[0] et al" : [@author], + NAME => $distro, + VERSION_FROM => $module, + ABSTRACT_FROM => $module, + AUTHOR => $author, LICENSE => 'mit', MIN_PERL_VERSION => '5.008009', CONFIGURE_REQUIRES => { - 'ExtUtils::MakeMaker' => 6.66, + 'ExtUtils::MakeMaker' => 6.48, 'Getopt::Long' => 2.43, - 'IO::File' => 1.08, + 'IO::File' => 1.14, 'IO::Socket::IP' => 0.38, }, TEST_REQUIRES => { - 'File::Find' => 1.05, - 'File::Spec' => 0.86, - 'IO::File' => 1.08, - 'Test::Builder' => 0, - 'Test::More' => 0, + 'ExtUtils::MakeMaker' => 0, + 'File::Find' => 1.13, + 'File::Spec' => 3.29, + 'IO::File' => 1.14, + 'Test::Builder' => 0.80, + 'Test::More' => 0.80, } ); @@ -54,22 +55,22 @@ 'Digest::MD5' => 2.13, 'Digest::SHA' => 5.23, 'Encode' => 2.26, - 'Exporter' => 5.56, - 'File::Spec' => 0.86, - 'IO::File' => 1.08, - 'IO::Select' => 1.14, - 'IO::Socket' => 1.26, + 'Exporter' => 5.63, + 'File::Spec' => 3.29, + 'IO::File' => 1.14, + 'IO::Select' => 1.17, + 'IO::Socket' => 1.30, 'IO::Socket::IP' => 0.38, 'MIME::Base64' => 2.13, 'PerlIO' => 1.05, - 'Scalar::Util' => 1.25, + 'Scalar::Util' => 1.19, 'Time::Local' => 1.19, %$platform ); my %optional = ( - 'Digest::BubbleBabble' => 0.01, + 'Digest::BubbleBabble' => 0.02, 'Net::LibIDN2' => 1.00, ); @@ -219,7 +220,7 @@ return join '', shift->SUPER::test(), <<'END'; # suppress parallel test execution -FULLPERLRUN = HARNESS_OPTIONS=c $(FULLPERL) +FULLPERLRUN = HARNESS_OPTIONS=j1:c $(FULLPERL) END } @@ -272,7 +273,7 @@ ## @installed ## ## The installation would be rendered ineffective because the -## installed version occurs in the library search path before +## existing @version occurs in the library search path before ## $install_site ## ## The generated Makefile supports build and test only. @@ -281,13 +282,10 @@ my $echo = ' $(NOECHO) $(ECHO) "##"'; $message =~ s/##/$echo/eg; - return join '', <<'END', $message; + return join '', <<"END"; install : - $(NOECHO) $(ECHO) "## Makefile supports build and test only" - $(NOECHO) $(ECHO) "## (see message from Makefile.PL)" - $(NOECHO) $(FALSE) - -test :: $(TEST_TYPE) + $message + \$(NOECHO) \$(FALSE) END } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/lib/Net/DNS/Header.pm new/Net-DNS-1.35/lib/Net/DNS/Header.pm --- old/Net-DNS-1.34/lib/Net/DNS/Header.pm 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/lib/Net/DNS/Header.pm 2022-10-04 21:53:52.000000000 +0200 @@ -3,7 +3,7 @@ use strict; use warnings; -our $VERSION = (qw$Id: Header.pm 1855 2021-11-26 11:33:48Z willem $)[2]; +our $VERSION = (qw$Id: Header.pm 1875 2022-09-23 13:41:03Z willem $)[2]; =head1 NAME @@ -67,7 +67,7 @@ my $ns = $self->nscount; my $ar = $self->arcount; - my $opt = $$self->edns; + my $opt = $$self->edns; my $edns = $opt->_specified ? $opt->string : ''; return <<END . $edns if $opcode eq 'UPDATE'; @@ -120,11 +120,16 @@ =cut +my ( $cache1, $cache2, $limit ) = ( {}, {}, 50 ); # two part cache + sub id { - my ( $self, @arg ) = @_; - $$self->{id} = shift(@arg) if scalar @arg; - return $$self->{id} if defined $$self->{id}; - return $$self->{id} = int rand(0xffff); + my $self = shift; + my $ident = scalar(@_) ? ( $$self->{id} = shift ) : $$self->{id}; + return $ident if defined $ident; + $cache2->{$ident = int rand(0xffff)}++; # preserve recent uniqueness + $cache2->{$ident = int rand(0xffff)}++ while $cache1->{$ident}++; + ( $cache1, $cache2, $limit ) = ( $cache2, {}, 50 ) unless $limit--; + return $$self->{id} = $ident; } @@ -143,7 +148,7 @@ for ( $$self->{status} ) { return opcodebyval( ( $_ >> 11 ) & 0x0f ) unless defined $arg; $opcode = opcodebyname($arg); - $_ = ( $_ & 0x87ff ) | ( $opcode << 11 ); + $_ = ( $_ & 0x87ff ) | ( $opcode << 11 ); } return $opcode; } @@ -305,7 +310,7 @@ sub qdcount { my $self = shift; return $$self->{count}[0] || scalar @{$$self->{question}} unless scalar @_; - carp 'header->qdcount attribute is read-only' unless $warned++; + carp 'packet->header->qdcount attribute is read-only' unless $warned++; return; } @@ -325,7 +330,7 @@ sub ancount { my $self = shift; return $$self->{count}[1] || scalar @{$$self->{answer}} unless scalar @_; - carp 'header->ancount attribute is read-only' unless $warned++; + carp 'packet->header->ancount attribute is read-only' unless $warned++; return; } @@ -345,7 +350,7 @@ sub nscount { my $self = shift; return $$self->{count}[2] || scalar @{$$self->{authority}} unless scalar @_; - carp 'header->nscount attribute is read-only' unless $warned++; + carp 'packet->header->nscount attribute is read-only' unless $warned++; return; } @@ -364,7 +369,7 @@ sub arcount { my $self = shift; return $$self->{count}[3] || scalar @{$$self->{additional}} unless scalar @_; - carp 'header->arcount attribute is read-only' unless $warned++; + carp 'packet->header->arcount attribute is read-only' unless $warned++; return; } @@ -441,23 +446,23 @@ my $flag = shift; for ( $$self->{status} ) { my $set = $_ | $flag; - my $not = $set - $flag; - $_ = (shift) ? $set : $not if scalar @_; - $flag = ( $_ & $flag ) ? 1 : 0; + $_ = (shift) ? $set : ( $set ^ $flag ) if scalar @_; + $flag &= $_; } - return $flag; + return $flag ? 1 : 0; } sub _ednsflag { - my ( $self, $flag, @val ) = @_; - my $edns = $$self->edns->flags || 0; - return $flag & $edns ? 1 : 0 unless scalar @val; - my $set = $flag | $edns; - my $not = $set - $flag; - my $val = shift(@val) ? $set : $not; - $$self->edns->flags($val) unless $val == $edns; - return ( $val & $flag ) ? 1 : 0; + my $self = shift; + my $flag = shift; + my $edns = $$self->edns; + for ( $edns->flags ) { + my $set = $_ | $flag; + $edns->flags( $_ = (shift) ? $set : ( $set ^ $flag ) ) if scalar @_; + $flag &= $_; + } + return $flag ? 1 : 0; } @@ -499,8 +504,8 @@ =head1 SEE ALSO -L<perl>, L<Net::DNS>, L<Net::DNS::Packet>, L<Net::DNS::RR::OPT> -RFC 1035 Section 4.1.1 +L<perl>, L<Net::DNS>, L<Net::DNS::Packet>, L<Net::DNS::RR::OPT>, +L<RFC1035(4.1.1)|https://tools.ietf.org/html/rfc1035> =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/lib/Net/DNS/RR/SOA.pm new/Net-DNS-1.35/lib/Net/DNS/RR/SOA.pm --- old/Net-DNS-1.34/lib/Net/DNS/RR/SOA.pm 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/lib/Net/DNS/RR/SOA.pm 2022-10-04 21:53:52.000000000 +0200 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = (qw$Id: SOA.pm 1857 2021-12-07 13:38:02Z willem $)[2]; +our $VERSION = (qw$Id: SOA.pm 1875 2022-09-23 13:41:03Z willem $)[2]; use base qw(Net::DNS::RR); @@ -257,14 +257,14 @@ $successor = $soa->serial( SEQUENTIAL ); The existing serial number is incremented modulo 2**32 because the -value returned by the auxilliary SEQUENTIAL() function can never +value returned by the auxiliary SEQUENTIAL() function can never satisfy the serial number ordering constraint. =head2 Date Encoded $successor = $soa->serial( YYYYMMDDxx ); -The 32 bit value returned by the auxilliary YYYYMMDDxx() function will +The 32 bit value returned by the auxiliary YYYYMMDDxx() function will be used if it satisfies the ordering constraint, otherwise the serial number will be incremented as above. @@ -275,7 +275,7 @@ $successor = $soa->serial( UNIXTIME ); -The 32 bit value returned by the auxilliary UNIXTIME() function will +The 32 bit value returned by the auxiliary UNIXTIME() function will used if it satisfies the ordering constraint, otherwise the existing serial number will be incremented as above. @@ -314,6 +314,7 @@ =head1 SEE ALSO -L<perl>, L<Net::DNS>, L<Net::DNS::RR>, RFC1035 Section 3.3.13, RFC1982 +L<perl>, L<Net::DNS>, L<Net::DNS::RR>, L<RFC1035|https://tools.ietf.org/html/rfc1035>, +L<RFC1982|https://tools.ietf.org/html/rfc1982> =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/lib/Net/DNS/RR/SVCB.pm new/Net-DNS-1.35/lib/Net/DNS/RR/SVCB.pm --- old/Net-DNS-1.34/lib/Net/DNS/RR/SVCB.pm 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/lib/Net/DNS/RR/SVCB.pm 2022-10-04 21:53:52.000000000 +0200 @@ -2,7 +2,7 @@ use strict; use warnings; -our $VERSION = (qw$Id: SVCB.pm 1857 2021-12-07 13:38:02Z willem $)[2]; +our $VERSION = (qw$Id: SVCB.pm 1875 2022-09-23 13:41:03Z willem $)[2]; use base qw(Net::DNS::RR); @@ -15,7 +15,6 @@ use integer; -use Carp; use MIME::Base64; use Net::DNS::DomainName; use Net::DNS::RR::A; @@ -31,6 +30,7 @@ ipv4hint => 'key4', ech => 'key5', ipv6hint => 'key6', + dohpath => 'key7', # draft-schwartz-svcb-dns ); @@ -81,11 +81,11 @@ my $encode = $self->{TargetName}->encode(); my $length = 2 + length $encode; - my @target = split /(\S{32})/, unpack 'H*', $encode; + my @target = grep {length} split /(\S{32})/, unpack 'H*', $encode; my @rdata = unpack 'H4', pack 'n', $priority; push @rdata, "\t; priority: $priority\n"; push @rdata, shift @target; - push @rdata, join '', "\t\t; target: ", substr( $target, 0, 50 ), "\n"; + push @rdata, join '', "\t; target: ", substr( $target, 0, 50 ), "\n"; push @rdata, @target; my @params = @$params; @@ -94,7 +94,7 @@ my $val = shift @params; push @rdata, "\n"; push @rdata, "; key$key=...\n" if $key > 15; - push @rdata, unpack 'H4H4', pack( 'n2', $key, length $val ); + push @rdata, unpack 'H4H4', pack( 'n2', $key, length $val ); push @rdata, split /(\S{32})/, unpack 'H*', $val; $length += 4 + length $val; } @@ -114,9 +114,9 @@ my @value; if (/^key\d+=(.*)$/i) { push @value, length($1) ? $1 : shift; - } elsif (/=(.*)$/) { + } elsif (/^[^=]+=(.*)$/) { local $_ = length($1) ? $1 : shift; - s/^"(.*)"$/$1/; # strip enclosing quotes + s/^"([^"]*)"$/$1/; # strip enclosing quotes push @value, split /,/; } else { push @value, '' unless $keybyname{lc $_}; # empty | Boolean @@ -141,13 +141,13 @@ if ( defined $svcparam{0} ) { my %unique; foreach ( grep { !$unique{$_}++ } unpack 'n*', $svcparam{0} ) { - croak( $self->type . qq[: unexpected "key0" in mandatory list] ) if $unique{0}; - croak( $self->type . qq[: duplicate "key$_" in mandatory list] ) if --$unique{$_}; - croak( $self->type . qq[: mandatory "key$_" not present] ) unless defined $svcparam{$_}; + die( $self->type . qq[: unexpected "key0" in mandatory list] ) if $unique{0}; + die( $self->type . qq[: duplicate "key$_" in mandatory list] ) if --$unique{$_}; + die( $self->type . qq[: mandatory "key$_" not present] ) unless defined $svcparam{$_}; } $self->mandatory( keys %unique ); # restore mandatory key list } - croak( $self->type . qq[: expected alpn="..." not present] ) if defined( $svcparam{2} ) and !$svcparam{1}; + die( $self->type . qq[: expected alpn="..." not present] ) if defined( $svcparam{2} ) and !$svcparam{1}; return; } @@ -182,7 +182,7 @@ sub mandatory { ## mandatory=key1,port,... my $self = shift; my @list = map { $keybyname{lc $_} || $_ } map { split /,/ } @_; - my @keys = map { /(\d+)$/ ? $1 : croak( $self->type . qq[: unexpected "$_"] ) } @list; + my @keys = map { /(\d+)$/ ? $1 : die( $self->type . qq[: unexpected "$_"] ) } @list; return $self->key0( _integer16( sort { $a <=> $b } @keys ) ); } @@ -216,6 +216,11 @@ return $self->key6( _ipv6(@_) ); } +sub dohpath { ## dohpath=/dns-query{?dns} + my $self = shift; # uncoverable pod + return $self->key7(@_); +} + ######################################## @@ -243,12 +248,11 @@ } sub _string { - local $_ = join ',', '', @_; # reassemble argument string - s/\\092,/\\044/g; ### tolerate unnecessary double-escape nonsense in - s/\\092\\092/\\092/g; ### draft-ietf-dnsop-svcb-https that contradicts RFC1035 + local $_ = join ',', @_; # reassemble argument string s/\\,/\\044/g; # disguise (RFC1035) escaped comma - my ( undef, @reparsed ) = split /,/; # multi-valued argument - return _presentation( map { Net::DNS::Text->new($_)->encode() } @reparsed ); + die qq[SVCB: Please use standard RFC1035 escapes\n draft-ietf-dnsop-svcb-https double-escape nonsense not implemented] + if /\\092,|\\092\\092/; + return _presentation( map { Net::DNS::Text->new($_)->encode() } split /,/ ); } @@ -269,12 +273,13 @@ if ( scalar @_ ) { my $arg = shift; # keyNN($value); delete $svcparams{$key} unless defined $arg; - croak( $self->type . qq[: duplicate SvcParam "key$key"] ) if defined $svcparams{$key}; + die( $self->type . qq[: duplicate SvcParam "key$key"] ) if defined $svcparams{$key}; + die( $self->type . qq[: invalid SvcParam "key$key"] ) if $key > 65534; $svcparams{$key} = Net::DNS::Text->new("$arg")->raw if defined $arg; $self->{SvcParams} = [map { ( $_, $svcparams{$_} ) } sort { $a <=> $b } keys %svcparams]; - croak( $self->type . qq[: unexpected number of values for "key$key"] ) if scalar @_; + die( $self->type . qq[: unexpected number of values for "key$key"] ) if scalar @_; } else { - croak( $self->type . qq[: no value specified for "key$key"] ) unless defined wantarray; + die( $self->type . qq[: no value specified for "key$key"] ) unless defined wantarray; } my $value = $svcparams{$key}; @@ -361,7 +366,7 @@ =head1 COPYRIGHT -Copyright (c)2020-2021 Dick Franks. +Copyright (c)2020-2022 Dick Franks. All rights reserved. @@ -389,6 +394,9 @@ =head1 SEE ALSO -L<perl>, L<Net::DNS>, L<Net::DNS::RR>, draft-ietf-dnsop-svcb-https +L<perl>, L<Net::DNS>, L<Net::DNS::RR>, draft-ietf-dnsop-svcb-https, +L<RFC1035|https://tools.ietf.org/html/rfc1035> + +L<Service Parameter Keys|https://www.iana.org/assignments/dns-svcb> =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/lib/Net/DNS.pm new/Net-DNS-1.35/lib/Net/DNS.pm --- old/Net-DNS-1.34/lib/Net/DNS.pm 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/lib/Net/DNS.pm 2022-10-04 21:53:52.000000000 +0200 @@ -4,9 +4,9 @@ use warnings; our $VERSION; -$VERSION = '1.34'; +$VERSION = '1.35'; $VERSION = eval { $VERSION }; -our $SVNVERSION = (qw$Id: DNS.pm 1867 2022-05-30 10:07:36Z willem $)[2]; +our $SVNVERSION = (qw$Id: DNS.pm 1882 2022-10-04 19:53:44Z willem $)[2]; =head1 NAME @@ -251,7 +251,7 @@ =head1 METHODS -Net::DNS exports methods and auxilliary functions to support +Net::DNS exports methods and auxiliary functions to support DNS updates, zone serial number management, and simple DNS queries. =head2 version @@ -305,7 +305,7 @@ =head1 Dynamic DNS Update Support -The Net::DNS module provides auxilliary functions which support +The Net::DNS module provides auxiliary functions which support dynamic DNS update requests. $update = Net::DNS::Update->new( 'example.com' ); @@ -413,7 +413,7 @@ =head1 Zone Serial Number Management -The Net::DNS module provides auxilliary functions which support +The Net::DNS module provides auxiliary functions which support policy-driven zone serial numbering regimes. $soa->serial(SEQUENTIAL); @@ -437,7 +437,7 @@ $successor = $soa->serial( YYYYMMDDxx ); -The 32 bit value returned by the auxilliary C<YYYYMMDDxx()> function +The 32 bit value returned by the auxiliary C<YYYYMMDDxx()> function will be used as the base for the date-coded zone serial number. Serial number increments must be limited to 100 per day for the date information to remain useful. @@ -649,7 +649,7 @@ L<perl>, L<Net::DNS::Resolver>, L<Net::DNS::Question>, L<Net::DNS::RR>, L<Net::DNS::Packet>, L<Net::DNS::Update>, -RFC1035, L<http://www.net-dns.org/>, +L<RFC1035|https://tools.ietf.org/html/rfc1035>, I<DNS and BIND> by Paul Albitz & Cricket Liu =cut diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/t/00-load.t new/Net-DNS-1.35/t/00-load.t --- old/Net-DNS-1.34/t/00-load.t 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/t/00-load.t 2022-10-04 21:53:52.000000000 +0200 @@ -1,34 +1,37 @@ #!/usr/bin/perl -# $Id: 00-load.t 1823 2020-11-16 16:29:45Z willem $ -*-perl-*- +# $Id: 00-load.t 1875 2022-09-23 13:41:03Z willem $ -*-perl-*- # use strict; use warnings; +use IO::File; use Test::More; -my @module = qw( - Net::DNS - Digest::BubbleBabble - Digest::HMAC - Digest::MD5 - Digest::SHA - Encode - File::Spec - IO::File - IO::Select - IO::Socket::IP - MIME::Base64 - Net::LibIDN2 - PerlIO - Scalar::Util - Time::Local - Win32::API - Win32::IPHelper - Win32::TieRegistry - ); +my @module = qw(Net::DNS); + +my %metadata; +my $handle = IO::File->new('MYMETA.json') || IO::File->new('META.json'); +if ($handle) { + my $json = join '', (<$handle>); + for ($json) { + s/\s:\s/ => /g; # Perl? en voil??! + my $hashref = eval $_; + %metadata = %$hashref; + } + close $handle; +} + +my %prerequisite; +foreach ( values %{$metadata{prereqs}} ) { # build, runtime, etc. + foreach ( values %$_ ) { # requires + $prerequisite{$_}++ for keys %$_; + } + delete @prerequisite{@module}; + delete $prerequisite{perl}; +} my @diag; -foreach my $module (@module) { +foreach my $module ( @module, sort keys %prerequisite ) { eval "require $module"; ## no critic for ( eval { $module->VERSION || () } ) { s/^(\d+\.\d)$/${1}0/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/t/05-SVCB.t new/Net-DNS-1.35/t/05-SVCB.t --- old/Net-DNS-1.34/t/05-SVCB.t 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/t/05-SVCB.t 2022-10-04 21:53:52.000000000 +0200 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: 05-SVCB.t 1847 2021-08-11 10:02:44Z willem $ -*-perl-*- +# $Id: 05-SVCB.t 1875 2022-09-23 13:41:03Z willem $ -*-perl-*- # use strict; @@ -13,10 +13,10 @@ if ( $] == 5.018000 ) or ( $] == 5.018001 ); -plan tests => 49; +plan tests => 50; -my $name = 'alias.example'; +my $name = 'SVCB.example'; my $type = 'SVCB'; my $code = 64; my @attr = qw( svcpriority targetname port ); @@ -101,7 +101,9 @@ Net::DNS::RR->new( <<'END' )->print; example.com. SVCB 16 foo.example.org. ( mandatory=alpn alpn=h2,h3-19 no-default-alpn port=1234 ipv4hint=192.0.2.1 - ech=Li4u ipv6hint=2001:db8::1 ) + ech=Li4u ipv6hint=2001:db8::1 + dohpath=/dns-query{?dns} + ) END } @@ -134,8 +136,11 @@ testcase('two IPv6 hints in quoted presentation format'); testcase('single IPv6 hint in IPv4 mapped IPv6 format'); testcase('unsorted SvcParams and mandatory key list'); -testcase('alpn with escaped escape and escaped comma'); -testcase('alpn with numeric escape and escaped comma'); + +failure('alpn with escaped escape and escaped comma'); # Appendix A not implemented +$zonefile->read(); +failure('alpn with numeric escape and escaped comma'); +$zonefile->read(); failure('key already defined'); @@ -152,6 +157,7 @@ failure('alpn not specified'); failure('unrecognised key name'); +failure('invalid SvcParam key'); failure('non-numeric port value'); failure('corrupt wire format'); @@ -300,6 +306,7 @@ example.com. SVCB 1 foo.example.com. mandatory=bogus +example.com. SVCB 1 foo.example.com. key65535=invalid example.com. SVCB 1 foo.example.com. port=1234X5 example.com. SVCB ( \# 25 0001 ; 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Net-DNS-1.34/t/99-cleanup.t new/Net-DNS-1.35/t/99-cleanup.t --- old/Net-DNS-1.34/t/99-cleanup.t 2022-05-30 12:07:57.000000000 +0200 +++ new/Net-DNS-1.35/t/99-cleanup.t 2022-10-04 21:53:52.000000000 +0200 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: 99-cleanup.t 1815 2020-10-14 21:55:18Z willem $ -*-perl-*- +# $Id: 99-cleanup.t 1880 2022-10-04 13:42:34Z willem $ -*-perl-*- # use strict; @@ -16,3 +16,4 @@ ok( 1, "Dummy" ); +exit;