r27852 - in /trunk/libdanga-socket-perl: CHANGES META.yml debian/changelog lib/Danga/Socket.pm
gregoa at users.alioth.debian.org
gregoa at users.alioth.debian.org
Sat Dec 6 18:47:41 UTC 2008
Author: gregoa
Date: Sat Dec 6 18:47:38 2008
New Revision: 27852
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=27852
Log:
New upstream release.
Modified:
trunk/libdanga-socket-perl/CHANGES
trunk/libdanga-socket-perl/META.yml
trunk/libdanga-socket-perl/debian/changelog
trunk/libdanga-socket-perl/lib/Danga/Socket.pm
Modified: trunk/libdanga-socket-perl/CHANGES
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdanga-socket-perl/CHANGES?rev=27852&op=diff
==============================================================================
--- trunk/libdanga-socket-perl/CHANGES (original)
+++ trunk/libdanga-socket-perl/CHANGES Sat Dec 6 18:47:38 2008
@@ -1,3 +1,11 @@
+1.61 (2008-11-27)
+ -- IPv6 support. At least enough to get Perlbal going.
+ Let me know if this is done incorrectly or non-portably!
+ (Brad Fitzpatrick; brad at danga.com).
+
+1.60
+ -- Keep watching for write after all writing is completed if user
+ specifically asked to watch_write (D. Leadbeater)
1.59
-- Don't keep watching for write after all writing is completed OK
Modified: trunk/libdanga-socket-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdanga-socket-perl/META.yml?rev=27852&op=diff
==============================================================================
--- trunk/libdanga-socket-perl/META.yml (original)
+++ trunk/libdanga-socket-perl/META.yml Sat Dec 6 18:47:38 2008
@@ -1,7 +1,7 @@
# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
name: Danga-Socket
-version: 1.59
+version: 1.61
version_from: lib/Danga/Socket.pm
installdirs: site
requires:
Modified: trunk/libdanga-socket-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdanga-socket-perl/debian/changelog?rev=27852&op=diff
==============================================================================
--- trunk/libdanga-socket-perl/debian/changelog (original)
+++ trunk/libdanga-socket-perl/debian/changelog Sat Dec 6 18:47:38 2008
@@ -1,4 +1,4 @@
-libdanga-socket-perl (1.59-2) UNRELEASED; urgency=low
+libdanga-socket-perl (1.61-1) UNRELEASED; urgency=low
[ MartÃn Ferrari ]
* Updating my email address
@@ -7,6 +7,7 @@
* debian/control: Changed: Switched Vcs-Browser field to ViewSVN
(source stanza).
* debian/control: Added: ${misc:Depends} to Depends: field.
+ * New upstream release.
-- MartÃn Ferrari <tincho at debian.org> Fri, 13 Jun 2008 00:04:49 +0000
Modified: trunk/libdanga-socket-perl/lib/Danga/Socket.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdanga-socket-perl/lib/Danga/Socket.pm?rev=27852&op=diff
==============================================================================
--- trunk/libdanga-socket-perl/lib/Danga/Socket.pm (original)
+++ trunk/libdanga-socket-perl/lib/Danga/Socket.pm Sat Dec 6 18:47:38 2008
@@ -100,7 +100,7 @@
my $opt_bsd_resource = eval "use BSD::Resource; 1;";
use vars qw{$VERSION};
-$VERSION = "1.59";
+$VERSION = "1.61";
use warnings;
no warnings qw(deprecated);
@@ -112,10 +112,12 @@
'write_buf', # arrayref of scalars, scalarrefs, or coderefs to write
'write_buf_offset', # offset into first array of write_buf to start writing at
'write_buf_size', # total length of data in all write_buf items
+ 'write_set_watch', # bool: true if we internally set watch_write rather than by a subclass
'read_push_back', # arrayref of "pushed-back" read data the application didn't want
'closed', # bool: socket is closed
'corked', # bool: socket is corked
'event_watch', # bitmask of events the client is interested in (POLLIN,OUT,etc.)
+ 'peer_v6', # bool: cached; if peer is an IPv6 address
'peer_ip', # cached stringified IP address of $sock
'peer_port', # cached port number of $sock
'local_ip', # cached stringified IP address of local end of $sock
@@ -1039,6 +1041,7 @@
push @{$self->{write_buf}}, $bref;
$self->{write_buf_size} += $len;
}
+ $self->{write_set_watch} = 1 unless $self->{event_watch} & POLLOUT;
$self->watch_write(1);
return 0;
} elsif ($! == ECONNRESET) {
@@ -1066,7 +1069,10 @@
$written, $self->{fd}, $need_queue);
$self->{write_buf_offset} = 0;
- $self->watch_write(0) if $self->{event_watch} & POLLOUT;
+ if ($self->{write_set_watch}) {
+ $self->watch_write(0);
+ $self->{write_set_watch} = 0;
+ }
# this was our only write, so we can return immediately
# since we avoided incrementing the buffer size or
@@ -1084,6 +1090,7 @@
sub on_incomplete_write {
my Danga::Socket $self = shift;
+ $self->{write_set_watch} = 1 unless $self->{event_watch} & POLLOUT;
$self->watch_write(1);
}
@@ -1231,6 +1238,11 @@
$event &= ~POLLOUT if ! $val;
$event |= POLLOUT if $val;
+ if ($val && caller ne __PACKAGE__) {
+ # A subclass registered interest, it's now responsible for this.
+ $self->{write_set_watch} = 0;
+ }
+
# If it changed, set it
if ($event != $self->{event_watch}) {
if ($HaveKQueue) {
@@ -1293,7 +1305,11 @@
return _undef("peer_ip_string undef: getpeername") unless $pn;
my ($port, $iaddr) = eval {
- Socket::sockaddr_in($pn);
+ if (length($pn) >= 28) {
+ return Socket6::unpack_sockaddr_in6($pn);
+ } else {
+ return Socket::sockaddr_in($pn);
+ }
};
if ($@) {
@@ -1303,7 +1319,13 @@
$self->{peer_port} = $port;
- return $self->{peer_ip} = Socket::inet_ntoa($iaddr);
+ if (length($iaddr) == 4) {
+ return $self->{peer_ip} = Socket::inet_ntoa($iaddr);
+ } else {
+ $self->{peer_v6} = 1;
+ return $self->{peer_ip} = Socket6::inet_ntop(Socket6::AF_INET6(),
+ $iaddr);
+ }
}
=head2 C<< $obj->peer_addr_string() >>
@@ -1314,8 +1336,11 @@
=cut
sub peer_addr_string {
my Danga::Socket $self = shift;
- my $ip = $self->peer_ip_string;
- return $ip ? "$ip:$self->{peer_port}" : undef;
+ my $ip = $self->peer_ip_string
+ or return undef;
+ return $self->{peer_v6} ?
+ "[$ip]:$self->{peer_port}" :
+ "$ip:$self->{peer_port}";
}
=head2 C<< $obj->local_ip_string() >>
More information about the Pkg-perl-cvs-commits
mailing list