r29804 - in /trunk/libanyevent-perl: Changes META.yml Makefile.PL debian/changelog lib/AnyEvent.pm lib/AnyEvent/DNS.pm lib/AnyEvent/Handle.pm lib/AnyEvent/Impl/Perl.pm lib/AnyEvent/Socket.pm lib/AnyEvent/Util.pm
mxey-guest at users.alioth.debian.org
mxey-guest at users.alioth.debian.org
Sun Jan 18 20:55:04 UTC 2009
Author: mxey-guest
Date: Sun Jan 18 20:55:01 2009
New Revision: 29804
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=29804
Log:
New upstream release
Modified:
trunk/libanyevent-perl/Changes
trunk/libanyevent-perl/META.yml
trunk/libanyevent-perl/Makefile.PL
trunk/libanyevent-perl/debian/changelog
trunk/libanyevent-perl/lib/AnyEvent.pm
trunk/libanyevent-perl/lib/AnyEvent/DNS.pm
trunk/libanyevent-perl/lib/AnyEvent/Handle.pm
trunk/libanyevent-perl/lib/AnyEvent/Impl/Perl.pm
trunk/libanyevent-perl/lib/AnyEvent/Socket.pm
trunk/libanyevent-perl/lib/AnyEvent/Util.pm
Modified: trunk/libanyevent-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/Changes?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/Changes (original)
+++ trunk/libanyevent-perl/Changes Sun Jan 18 20:55:01 2009
@@ -1,4 +1,12 @@
Revision history for Perl extension AnyEvent.
+
+4.331 Tue Jan 6 21:07:25 CET 2009
+ - socketpair fails on many vista machines because vista has
+ completely broken accept/getpeername and getsockname functions,
+ so we provide our own socketpair emulation that kind of works
+ (AnyEvent::Util::portable_pipe).
+ - new function: AnyEvent::Util::portable_socketpair.
+ - take advantage of the Guard module if it exists.
4.33 Fri Nov 21 02:35:40 CET 2008
- AnyEvent::Strict did errornously flag a fileno of 0 as
Modified: trunk/libanyevent-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/META.yml?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/META.yml (original)
+++ trunk/libanyevent-perl/META.yml Sun Jan 18 20:55:01 2009
@@ -1,6 +1,6 @@
--- #YAML:1.0
name: AnyEvent
-version: 4.33
+version: 4.331
abstract: ~
license: ~
author: ~
@@ -16,4 +16,5 @@
JSON: 2.09
JSON::XS 2.2
EV: 4.05
+ Guard: 0.5
Modified: trunk/libanyevent-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/Makefile.PL?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/Makefile.PL (original)
+++ trunk/libanyevent-perl/Makefile.PL Sun Jan 18 20:55:01 2009
@@ -34,6 +34,7 @@
JSON: 2.09
JSON::XS 2.2
EV: 4.05
+ Guard: 0.5
},
);
Modified: trunk/libanyevent-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/debian/changelog?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/debian/changelog (original)
+++ trunk/libanyevent-perl/debian/changelog Sun Jan 18 20:55:01 2009
@@ -1,5 +1,5 @@
-libanyevent-perl (4.33-1) UNRELEASED; urgency=low
+libanyevent-perl (4.331-1) UNRELEASED; urgency=low
* Initial Release (closes: #496904).
- -- Maximilian Gaß <mxey at cloudconnected.org> Sun, 30 Nov 2008 18:22:35 +0100
+ -- Maximilian Gaß <mxey at cloudconnected.org> Sun, 18 Jan 2009 21:54:15 +0100
Modified: trunk/libanyevent-perl/lib/AnyEvent.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/lib/AnyEvent.pm?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/lib/AnyEvent.pm (original)
+++ trunk/libanyevent-perl/lib/AnyEvent.pm Sun Jan 18 20:55:01 2009
@@ -863,7 +863,7 @@
use Carp;
-our $VERSION = 4.33;
+our $VERSION = 4.331;
our $MODEL;
our $AUTOLOAD;
Modified: trunk/libanyevent-perl/lib/AnyEvent/DNS.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/lib/AnyEvent/DNS.pm?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/lib/AnyEvent/DNS.pm (original)
+++ trunk/libanyevent-perl/lib/AnyEvent/DNS.pm Sun Jan 18 20:55:01 2009
@@ -37,7 +37,7 @@
use AnyEvent::Handle ();
use AnyEvent::Util qw(AF_INET6);
-our $VERSION = 4.33;
+our $VERSION = 4.331;
our @DNS_FALLBACK = (v208.67.220.220, v208.67.222.222);
Modified: trunk/libanyevent-perl/lib/AnyEvent/Handle.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/lib/AnyEvent/Handle.pm?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/lib/AnyEvent/Handle.pm (original)
+++ trunk/libanyevent-perl/lib/AnyEvent/Handle.pm Sun Jan 18 20:55:01 2009
@@ -16,7 +16,7 @@
=cut
-our $VERSION = 4.33;
+our $VERSION = 4.331;
=head1 SYNOPSIS
@@ -29,7 +29,7 @@
AnyEvent::Handle->new (
fh => \*STDIN,
on_eof => sub {
- $cv->broadcast;
+ $cv->send;
},
);
Modified: trunk/libanyevent-perl/lib/AnyEvent/Impl/Perl.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/lib/AnyEvent/Impl/Perl.pm?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/lib/AnyEvent/Impl/Perl.pm (original)
+++ trunk/libanyevent-perl/lib/AnyEvent/Impl/Perl.pm Sun Jan 18 20:55:01 2009
@@ -91,7 +91,7 @@
use AnyEvent ();
use AnyEvent::Util ();
-our $VERSION = 4.33;
+our $VERSION = 4.331;
our ($NOW, $MNOW);
Modified: trunk/libanyevent-perl/lib/AnyEvent/Socket.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/lib/AnyEvent/Socket.pm?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/lib/AnyEvent/Socket.pm (original)
+++ trunk/libanyevent-perl/lib/AnyEvent/Socket.pm Sun Jan 18 20:55:01 2009
@@ -59,7 +59,7 @@
tcp_connect
);
-our $VERSION = 4.33;
+our $VERSION = 4.331;
=item $ipn = parse_ipv4 $dotted_quad
Modified: trunk/libanyevent-perl/lib/AnyEvent/Util.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libanyevent-perl/lib/AnyEvent/Util.pm?rev=29804&op=diff
==============================================================================
--- trunk/libanyevent-perl/lib/AnyEvent/Util.pm (original)
+++ trunk/libanyevent-perl/lib/AnyEvent/Util.pm Sun Jan 18 20:55:01 2009
@@ -31,10 +31,10 @@
use base 'Exporter';
-our @EXPORT = qw(fh_nonblocking guard fork_call portable_pipe);
+our @EXPORT = qw(fh_nonblocking guard fork_call portable_pipe portable_socketpair);
our @EXPORT_OK = qw(AF_INET6 WSAEWOULDBLOCK WSAEINPROGRESS WSAEINVAL WSAWOULDBLOCK);
-our $VERSION = 4.33;
+our $VERSION = 4.331;
BEGIN {
my $posix = 1 * eval { local $SIG{__DIE__}; require POSIX };
@@ -69,7 +69,7 @@
if (AnyEvent::WIN32) {
eval "sub WSAEINVAL() { 10022 }";
eval "sub WSAEWOULDBLOCK() { 10035 }";
- eval "sub WSAWOULDBLOCK() { 10035 }"; # TODO remove here ands from @export_ok
+ eval "sub WSAWOULDBLOCK() { 10035 }"; # TODO remove here and from @export_ok
eval "sub WSAEINPROGRESS() { 10036 }";
} else {
# these should never match any errno value
@@ -84,31 +84,96 @@
Calling C<pipe> in Perl is portable - except it doesn't really work on
sucky windows platforms (at least not with most perls - cygwin's perl
-notably works fine).
-
-On that platform, you actually get two file handles you cannot use select
-on.
+notably works fine): On windows, you actually get two file handles you
+cannot use select on.
This function gives you a pipe that actually works even on the broken
-Windows platform (by creating a pair of TCP sockets, so do not expect any
+windows platform (by creating a pair of TCP sockets, so do not expect any
speed from that).
+See portable_socketpair, below, for a bidirectional "pipe".
+
Returns the empty list on any errors.
-=cut
+=item ($fh1, $fh2) = portable_socketpair
+
+Just like C<portable_pipe>, above, but returns a bidirectional pipe
+(usually by calling socketpair to create a local loopback socket).
+
+Returns the empty list on any errors.
+
+=cut
+
+sub _win32_socketpair {
+ # perl's socketpair emulation fails on many vista machines, because
+ # vista returns fantasy port numbers.
+
+ for (1..10) {
+ socket my $l, &Socket::AF_INET, &Socket::SOCK_STREAM, 0
+ or next;
+
+ bind $l, Socket::pack_sockaddr_in 0, "\x7f\x00\x00\x01"
+ or next;
+
+ my $sa = getsockname $l
+ or next;
+
+ listen $l, 1
+ or next;
+
+ socket my $r, &Socket::AF_INET, &Socket::SOCK_STREAM, 0
+ or next;
+
+ bind $r, Socket::pack_sockaddr_in 0, "\x7f\x00\x00\x01"
+ or next;
+
+ connect $r, $sa
+ or next;
+
+ accept my $w, $l
+ or next;
+
+ # vista has completely broken peername/sockname that return
+ # fantasy ports. this combo seems to work, though.
+ #
+ (Socket::unpack_sockaddr_in getpeername $r)[0]
+ == (Socket::unpack_sockaddr_in getsockname $w)[0]
+ or (($! = WSAEINVAL), next);
+
+ # vista example (you can't make this shit up...):
+ #(Socket::unpack_sockaddr_in getsockname $r)[0] == 53364
+ #(Socket::unpack_sockaddr_in getpeername $r)[0] == 53363
+ #(Socket::unpack_sockaddr_in getsockname $w)[0] == 53363
+ #(Socket::unpack_sockaddr_in getpeername $w)[0] == 53365
+
+ return ($r, $w);
+ }
+
+ ()
+}
sub portable_pipe() {
- my ($r, $w);
-
if (AnyEvent::WIN32) {
- socketpair $r, $w, &Socket::AF_UNIX, &Socket::SOCK_STREAM, 0
- or return;
+ return _win32_socketpair;
} else {
+ my ($r, $w);
+
pipe $r, $w
or return;
- }
-
- ($r, $w)
+
+ return ($r, $w);
+ }
+}
+
+sub portable_socketpair() {
+ if (AnyEvent::WIN32) {
+ return _win32_socketpair;
+ } else {
+ socketpair my $fh1, my $fh2, &Socket::AF_UNIX, &Socket::SOCK_STREAM, &Socket::PF_UNSPEC
+ or return;
+
+ return ($fh1, $fh2)
+ }
}
=item fork_call { CODE } @args, $cb->(@res)
@@ -319,6 +384,9 @@
This is often handy in continuation-passing style code to clean up some
resource regardless of where you break out of a process.
+The L<Guard> module will be used to implement this function, if it is
+available. Otherwise a pure-perl implementation is used.
+
You can call one method on the returned object:
=item $guard->cancel
@@ -328,23 +396,29 @@
=cut
-sub AnyEvent::Util::Guard::DESTROY {
- local $@;
-
- eval {
- local $SIG{__DIE__};
- ${$_[0]}->();
- };
-
- warn "runtime error in AnyEvent::guard callback: $@" if $@;
-}
-
-sub AnyEvent::Util::Guard::cancel($) {
- ${$_[0]} = sub { };
-}
-
-sub guard(&) {
- bless \(my $cb = shift), AnyEvent::Util::Guard::
+BEGIN {
+ if (eval "use Guard 0.5; 1") {
+ *guard = \&Guard::guard;
+ } else {
+ *AnyEvent::Util::Guard::DESTROY = sub {
+ local $@;
+
+ eval {
+ local $SIG{__DIE__};
+ ${$_[0]}->();
+ };
+
+ warn "runtime error in AnyEvent::guard callback: $@" if $@;
+ };
+
+ *AnyEvent::Util::Guard::cancel = sub ($) {
+ ${$_[0]} = sub { };
+ };
+
+ *guard = sub (&) {
+ bless \(my $cb = shift), AnyEvent::Util::Guard::
+ }
+ }
}
1;
More information about the Pkg-perl-cvs-commits
mailing list