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 - [email protected]
+
+- 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::],


Reply via email to