Hello community, here is the log from the commit of package perl-AnyEvent for openSUSE:Factory checked in at 2016-04-28 16:52:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-AnyEvent (Old) and /work/SRC/openSUSE:Factory/.perl-AnyEvent.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "perl-AnyEvent" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-AnyEvent/perl-AnyEvent.changes 2015-05-05 00:56:06.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-AnyEvent.new/perl-AnyEvent.changes 2016-04-28 16:52:54.000000000 +0200 @@ -1,0 +2,19 @@ +Sun Sep 20 15:35:05 UTC 2015 - coolo@suse.com + +- updated to 7.11 + see /usr/share/doc/packages/perl-AnyEvent/Changes + + TODO: more formats for parse_ipv6 (single ipv6 address without port, ...p80, ...#80) + + 7.11 Thu Jul 16 14:36:00 CEST 2015 + - AnyEvent::Socket::parse_ipv6 could accept malformed ipv6 + addresses (extra "::" at end and similar cases). + - add a more explicit warning to AnyEvent::Handle that it doesn't + work on files, people keep getting confused. + - new function AnyEvent::Socket::tcp_bind. + - new functions AnyEvent::fh_block and AnyEvent::fh_unblock. + - aligned ipv6 address formatting with RFC 5952 (by not shortening + a single :0: to ::). + - added stability canary support. + +------------------------------------------------------------------- Old: ---- AnyEvent-7.09.tar.gz New: ---- AnyEvent-7.11.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-AnyEvent.spec ++++++ --- /var/tmp/diff_new_pack.VU0D4T/_old 2016-04-28 16:52:55.000000000 +0200 +++ /var/tmp/diff_new_pack.VU0D4T/_new 2016-04-28 16:52:55.000000000 +0200 @@ -17,7 +17,7 @@ Name: perl-AnyEvent -Version: 7.09 +Version: 7.11 Release: 0 #Upstream: CHECK(GPL-1.0+ or Artistic-1.0) %define cpan_name AnyEvent @@ -32,6 +32,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros +BuildRequires: perl(Canary::Stability) Recommends: perl(Async::Interrupt) >= 1 Recommends: perl(EV) >= 4 Recommends: perl(Guard) >= 1.02 ++++++ AnyEvent-7.09.tar.gz -> AnyEvent-7.11.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/Changes new/AnyEvent-7.11/Changes --- old/AnyEvent-7.09/Changes 2015-05-02 16:39:12.000000000 +0200 +++ new/AnyEvent-7.11/Changes 2015-07-16 14:36:18.000000000 +0200 @@ -9,6 +9,18 @@ TODO: invalid. and localhost. specialcasing inside AEDNS and not AESocket (rfc6761) TODO: maybe implement env variable to give hosts precedence TODO: hosts always read? that's not expected +TODO: more formats for parse_ipv6 (single ipv6 address without port, ...p80, ...#80) + +7.11 Thu Jul 16 14:36:00 CEST 2015 + - AnyEvent::Socket::parse_ipv6 could accept malformed ipv6 + addresses (extra "::" at end and similar cases). + - add a more explicit warning to AnyEvent::Handle that it doesn't + work on files, people keep getting confused. + - new function AnyEvent::Socket::tcp_bind. + - new functions AnyEvent::fh_block and AnyEvent::fh_unblock. + - aligned ipv6 address formatting with RFC 5952 (by not shortening + a single :0: to ::). + - added stability canary support. 7.09 Sat May 2 16:38:53 CEST 2015 - AnyEvent::Debug called an internal function (AnyEvent::Log::ft) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/META.json new/AnyEvent-7.11/META.json --- old/AnyEvent-7.09/META.json 2015-05-02 16:39:23.000000000 +0200 +++ new/AnyEvent-7.11/META.json 2015-07-16 14:48:29.000000000 +0200 @@ -4,7 +4,7 @@ "unknown" ], "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142060", + "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001", "license" : [ "unknown" ], @@ -27,7 +27,8 @@ }, "configure" : { "requires" : { - "ExtUtils::MakeMaker" : "0" + "Canary::Stability" : "0", + "ExtUtils::MakeMaker" : "6.52" } }, "runtime" : { @@ -44,5 +45,5 @@ } }, "release_status" : "stable", - "version" : "7.09" + "version" : 7.11 } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/META.yml new/AnyEvent-7.11/META.yml --- old/AnyEvent-7.09/META.yml 2015-05-02 16:39:23.000000000 +0200 +++ new/AnyEvent-7.11/META.yml 2015-07-16 14:48:29.000000000 +0200 @@ -5,9 +5,10 @@ build_requires: ExtUtils::MakeMaker: '0' configure_requires: - ExtUtils::MakeMaker: '0' + Canary::Stability: '0' + ExtUtils::MakeMaker: '6.52' dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142060' +generated_by: 'ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001' license: unknown meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -26,4 +27,4 @@ Net::SSLeay: '1.33' Task::Weaken: '0' requires: {} -version: '7.09' +version: 7.11 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/Makefile.PL new/AnyEvent-7.11/Makefile.PL --- old/AnyEvent-7.09/Makefile.PL 2014-08-28 17:01:41.000000000 +0200 +++ new/AnyEvent-7.11/Makefile.PL 2015-07-16 14:38:11.000000000 +0200 @@ -1,6 +1,7 @@ use ExtUtils::MakeMaker; -use 5.008001; # AnyEvent perl event loop seems to work with 5.6, other modules not +# AnyEvent perl event loop seems to work with 5.6, other modules not +eval 'use Canary::Stability AnyEvent => 1, 5.008001'; print <<EOF; @@ -37,6 +38,7 @@ # PREREQ_PM => { # Task::Weaken => 0, # }, + CONFIGURE_REQUIRES => { "ExtUtils::MakeMaker" => 6.52, "Canary::Stability" => 0 }, META_MERGE => { recommends => { "Task::Weaken" => 0, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/README new/AnyEvent-7.11/README --- old/AnyEvent-7.09/README 2015-05-02 16:39:23.000000000 +0200 +++ new/AnyEvent-7.11/README 2015-07-16 14:48:29.000000000 +0200 @@ -1032,6 +1032,10 @@ function, which can reduce typing, codesize and can reduce the logging overhead enourmously. + AnyEvent::fh_block $filehandle + AnyEvent::fh_unblock $filehandle + Sets blocking or non-blocking behaviour for the given filehandle. + WHAT TO DO IN A MODULE As a module author, you should "use AnyEvent" and call AnyEvent methods freely, but you should not load a specific event module or rely on it. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/lib/AnyEvent/DNS.pm new/AnyEvent-7.11/lib/AnyEvent/DNS.pm --- old/AnyEvent-7.09/lib/AnyEvent/DNS.pm 2014-12-31 14:19:01.000000000 +0100 +++ new/AnyEvent-7.11/lib/AnyEvent/DNS.pm 2015-06-16 05:21:36.000000000 +0200 @@ -812,7 +812,7 @@ if (socket my $fh4, AF_INET , Socket::SOCK_DGRAM(), 0) { ++$got_socket; - AnyEvent::Util::fh_nonblocking $fh4, 1; + AnyEvent::fh_unblock $fh4; $self->{fh4} = $fh4; $self->{rw4} = AE::io $fh4, 0, sub { if (my $peer = recv $fh4, my $pkt, MAX_PKT, 0) { @@ -825,7 +825,7 @@ ++$got_socket; $self->{fh6} = $fh6; - AnyEvent::Util::fh_nonblocking $fh6, 1; + AnyEvent::fh_unblock $fh6; $self->{rw6} = AE::io $fh6, 0, sub { if (my $peer = recv $fh6, my $pkt, MAX_PKT, 0) { $wself->_recv ($pkt, $peer); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/lib/AnyEvent/Debug.pm new/AnyEvent-7.11/lib/AnyEvent/Debug.pm --- old/AnyEvent-7.09/lib/AnyEvent/Debug.pm 2015-03-13 08:40:07.000000000 +0100 +++ new/AnyEvent-7.11/lib/AnyEvent/Debug.pm 2015-06-16 05:22:58.000000000 +0200 @@ -128,7 +128,7 @@ while ($rbuf =~ s/^(.*)\015?\012//) { my $line = $1; - AnyEvent::Util::fh_nonblocking $fh, 0; + AnyEvent::fh_block $fh; if ($line =~ /^\s*exit\b/) { syswrite $fh, "sorry, no... if you want to execute exit, try CORE::exit.\015\012"; @@ -175,7 +175,7 @@ } syswrite $fh, "> "; - AnyEvent::Util::fh_nonblocking $fh, 1; + AnyEvent::fh_unblock $fh; } } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/lib/AnyEvent/Handle.pm new/AnyEvent-7.11/lib/AnyEvent/Handle.pm --- old/AnyEvent-7.09/lib/AnyEvent/Handle.pm 2015-04-01 21:58:51.000000000 +0200 +++ new/AnyEvent-7.11/lib/AnyEvent/Handle.pm 2015-06-28 11:30:06.000000000 +0200 @@ -32,8 +32,10 @@ =head1 DESCRIPTION -This is a helper module to make it easier to do event-based I/O on -stream-based filehandles (sockets, pipes, and other stream things). +This is a helper module to make it easier to do event-based I/O +on stream-based filehandles (sockets, pipes, and other stream +things). Specifically, it doesn't work as expected on files, packet-based +sockets or similar things. The L<AnyEvent::Intro> tutorial contains some well-documented AnyEvent::Handle examples. @@ -93,7 +95,7 @@ The filehandle this L<AnyEvent::Handle> object will operate on. NOTE: The filehandle will be set to non-blocking mode (using -C<AnyEvent::Util::fh_nonblocking>) by the constructor and needs to stay in +C<AnyEvent::fh_unblock>) by the constructor and needs to stay in that mode. =item connect => [$host, $service] [C<fh> or C<connect> MANDATORY] @@ -613,7 +615,7 @@ Carp::croak "AnyEvent::Handle: only stream sockets supported, anything else will NOT work!" if Socket::SOCK_STREAM () != (unpack "I", $type) && defined $type; - AnyEvent::Util::fh_nonblocking $self->{fh}, 1; + AnyEvent::fh_unblock $self->{fh}; $self->{_activity} = $self->{_ractivity} = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/lib/AnyEvent/Socket.pm new/AnyEvent-7.11/lib/AnyEvent/Socket.pm --- old/AnyEvent-7.09/lib/AnyEvent/Socket.pm 2015-03-13 08:41:40.000000000 +0100 +++ new/AnyEvent-7.11/lib/AnyEvent/Socket.pm 2015-07-10 05:10:44.000000000 +0200 @@ -40,7 +40,7 @@ use Socket qw(AF_INET AF_UNIX SOCK_STREAM SOCK_DGRAM SOL_SOCKET SO_REUSEADDR); use AnyEvent (); BEGIN { AnyEvent::common_sense } -use AnyEvent::Util qw(guard fh_nonblocking AF_INET6); +use AnyEvent::Util qw(guard AF_INET6); use AnyEvent::DNS (); use base 'Exporter'; @@ -117,8 +117,8 @@ ($h, $t) = (undef, $h); } - my @h = split /:/, $h; - my @t = split /:/, $t; + my @h = split /:/, $h, -1; + my @t = split /:/, $t, -1; # check for ipv4 tail if (@t && $t[-1]=~ /\./) { @@ -271,7 +271,7 @@ print join ",", parse_hostport "[::1]"; # => "," (empty list) - print join ",", parse_host_port "/tmp/debug.sock"; + print join ",", parse_hostport "/tmp/debug.sock"; # => "unix/", "/tmp/debug.sock" =cut @@ -418,8 +418,7 @@ or $ip =~ s/(?:^|:) 0:0:0:0:0 (?:$|:)/::/x or $ip =~ s/(?:^|:) 0:0:0:0 (?:$|:)/::/x or $ip =~ s/(?:^|:) 0:0:0 (?:$|:)/::/x - or $ip =~ s/(?:^|:) 0:0 (?:$|:)/::/x - or $ip =~ s/(?:^|:) 0 (?:$|:)/::/x; + or $ip =~ s/(?:^|:) 0:0 (?:$|:)/::/x; $ip } @@ -1007,7 +1006,7 @@ socket $state{fh}, $domain, $type, $proto or return $state{next}(); - fh_nonblocking $state{fh}, 1; + AnyEvent::fh_unblock $state{fh}; my $timeout = $prepare && $prepare->($state{fh}); @@ -1144,10 +1143,23 @@ my ($fh) = @_; }; +=item $guard = AnyEvent::Socket::tcp_bind $host, $service, $done_cb[, $prepare_cb] + +Same as C<tcp_server>, except it doesn't call C<accept> in a loop for you +but simply passes the listen socket to the C<$done_cb>. This is useful +when you want to have a convenient set up for your listen socket, but want +to do the C<accept>'ing yourself, for example, in another process. + +In case of an error, C<tcp_bind> either croaks, or passes C<undef> to the +C<$done_cb>. + +The guard only protects the set-up phase, it isn't used after C<$done_cb> +has been invoked. + =cut -sub tcp_server($$$;$) { - my ($host, $service, $accept, $prepare) = @_; +sub _tcp_bind($$$;$) { + my ($host, $service, $done, $prepare) = @_; $host = $AnyEvent::PROTOCOL{ipv4} < $AnyEvent::PROTOCOL{ipv6} && AF_INET6 ? "::" : "0" @@ -1193,7 +1205,7 @@ }; } - fh_nonblocking $state{fh}, 1; + AnyEvent::fh_unblock $state{fh}; my $len; @@ -1207,21 +1219,39 @@ listen $state{fh}, $len or Carp::croak "listen: $!"; - $state{aw} = AE::io $state{fh}, 0, sub { - # this closure keeps $state alive - while ($state{fh} && (my $peer = accept my $fh, $state{fh})) { - fh_nonblocking $fh, 1; # POSIX requires inheritance, the outside world does not - - my ($service, $host) = unpack_sockaddr $peer; - $accept->($fh, format_address $host, $service); - } - }; + $done->(\%state); defined wantarray ? guard { %state = () } # clear fh and watcher, which breaks the circular dependency : () } +sub tcp_bind($$$;$) { + my ($host, $service, $done, $prepare) = @_; + + _tcp_bind $host, $service, sub { + $done->(delete shift->{fh}); + }, $prepare +} + +sub tcp_server($$$;$) { + my ($host, $service, $accept, $prepare) = @_; + + _tcp_bind $host, $service, sub { + my $rstate = shift; + + $rstate->{aw} = AE::io $rstate->{fh}, 0, sub { + # this closure keeps $state alive + while ($rstate->{fh} && (my $peer = accept my $fh, $rstate->{fh})) { + AnyEvent::fh_unblock $fh; # POSIX requires inheritance, the outside world does not + + my ($service, $host) = unpack_sockaddr $peer; + $accept->($fh, format_address $host, $service); + } + }; + }, $prepare +} + =item tcp_nodelay $fh, $enable Enables (or disables) the C<TCP_NODELAY> socket option (also known as diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/lib/AnyEvent/Util.pm new/AnyEvent-7.11/lib/AnyEvent/Util.pm --- old/AnyEvent-7.09/lib/AnyEvent/Util.pm 2015-03-13 08:45:11.000000000 +0100 +++ new/AnyEvent-7.11/lib/AnyEvent/Util.pm 2015-06-16 05:15:55.000000000 +0200 @@ -354,17 +354,13 @@ false == blocking). Uses fcntl on anything sensible and ioctl FIONBIO on broken (i.e. windows) platforms. +Instead of using this function, you could use C<AnyEvent::fh_block> or +C<AnyEvent::fh_unblock>. + =cut BEGIN { - *fh_nonblocking = AnyEvent::WIN32 - ? sub($$) { - ioctl $_[0], 0x8004667e, pack "L", $_[1]; # FIONBIO - } - : sub($$) { - fcntl $_[0], AnyEvent::F_SETFL, $_[1] ? AnyEvent::O_NONBLOCK : 0; - } - ; + *fh_nonblocking = \&AnyEvent::_fh_nonblocking; } =item $guard = guard { CODE } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AnyEvent-7.09/lib/AnyEvent.pm new/AnyEvent-7.11/lib/AnyEvent.pm --- old/AnyEvent-7.09/lib/AnyEvent.pm 2015-05-02 16:39:21.000000000 +0200 +++ new/AnyEvent-7.11/lib/AnyEvent.pm 2015-07-16 14:39:33.000000000 +0200 @@ -1080,6 +1080,12 @@ which can reduce typing, codesize and can reduce the logging overhead enourmously. +=item AnyEvent::fh_block $filehandle + +=item AnyEvent::fh_unblock $filehandle + +Sets blocking or non-blocking behaviour for the given filehandle. + =back =head1 WHAT TO DO IN A MODULE @@ -1250,7 +1256,7 @@ use Carp (); -our $VERSION = '7.09'; +our $VERSION = 7.11; our $MODEL; our @ISA; our @REGISTRY; @@ -1357,6 +1363,25 @@ require AnyEvent::Log; # AnyEvent::Log does the thing for us } +BEGIN { + *_fh_nonblocking = AnyEvent::WIN32 + ? sub($$) { + ioctl $_[0], 0x8004667e, pack "L", $_[1]; # FIONBIO + } + : sub($$) { + fcntl $_[0], AnyEvent::F_SETFL, $_[1] ? AnyEvent::O_NONBLOCK : 0; + } + ; +} + +sub fh_block($) { + _fh_nonblocking shift, 0 +} + +sub fh_unblock($) { + _fh_nonblocking shift, 1 +} + our @models = ( [EV:: => AnyEvent::Impl::EV::], [AnyEvent::Loop:: => AnyEvent::Impl::Perl::],