r72321 - in /trunk/libnet-server-perl/debian: changelog control patches/00list patches/05_ipv6-support.dpatch patches/06_cidr-workaround.dpatch
wolffc-guest at users.alioth.debian.org
wolffc-guest at users.alioth.debian.org
Thu Apr 7 12:32:39 UTC 2011
Author: wolffc-guest
Date: Thu Apr 7 12:32:25 2011
New Revision: 72321
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=72321
Log:
added patches for IPv6 support in Net::Server
Added:
trunk/libnet-server-perl/debian/patches/05_ipv6-support.dpatch (with props)
trunk/libnet-server-perl/debian/patches/06_cidr-workaround.dpatch (with props)
Modified:
trunk/libnet-server-perl/debian/changelog
trunk/libnet-server-perl/debian/control
trunk/libnet-server-perl/debian/patches/00list
Modified: trunk/libnet-server-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libnet-server-perl/debian/changelog?rev=72321&op=diff
==============================================================================
--- trunk/libnet-server-perl/debian/changelog (original)
+++ trunk/libnet-server-perl/debian/changelog Thu Apr 7 12:32:25 2011
@@ -1,3 +1,14 @@
+libnet-server-perl (0.99-3) UNRELEASED; urgency=low
+
+ * took IPv6 patch from bug report, improved and included it
+ as 05_ipv6-support.dpatch.
+ (closes: Bug#523846)
+ * added depends introduced by above patch
+ * created patch 06_cidr-workaround.dpatch as a workaround
+ until Net::CIDR is fixed
+
+ -- Carsten Wolff <carsten at wolffcarsten.de> Thu, 07 Apr 2011 10:29:32 +0200
+
libnet-server-perl (0.99-2) unstable; urgency=low
* made lintian happy
Modified: trunk/libnet-server-perl/debian/control
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libnet-server-perl/debian/control?rev=72321&op=diff
==============================================================================
--- trunk/libnet-server-perl/debian/control (original)
+++ trunk/libnet-server-perl/debian/control Thu Apr 7 12:32:25 2011
@@ -11,8 +11,8 @@
Package: libnet-server-perl
Architecture: all
-Depends: ${misc:Depends}, libio-multiplex-perl, libnet-cidr-perl, ${perl:Depends}
-Suggests: libio-socket-ssl-perl
+Depends: ${misc:Depends}, libio-multiplex-perl, libnet-cidr-perl, libsocket6-perl, libio-socket-inet6-perl, ${perl:Depends}
+Suggests: libio-socket-ssl-perl, libnet-ssleay-perl
Description: An extensible, general perl server engine
Net::Server is an extensible, general perl server engine that combines the
good properties from Net::Daemon, NetServer::Generic, and Net::FTPServer;
Modified: trunk/libnet-server-perl/debian/patches/00list
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libnet-server-perl/debian/patches/00list?rev=72321&op=diff
==============================================================================
--- trunk/libnet-server-perl/debian/patches/00list (original)
+++ trunk/libnet-server-perl/debian/patches/00list Thu Apr 7 12:32:25 2011
@@ -1,3 +1,5 @@
02_spec
03_rt-cpan-65891-reap-children
04_fix-pod-error-in-http-manapage
+05_ipv6-support
+06_cidr-workaround
Added: trunk/libnet-server-perl/debian/patches/05_ipv6-support.dpatch
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libnet-server-perl/debian/patches/05_ipv6-support.dpatch?rev=72321&op=file
==============================================================================
--- trunk/libnet-server-perl/debian/patches/05_ipv6-support.dpatch (added)
+++ trunk/libnet-server-perl/debian/patches/05_ipv6-support.dpatch Thu Apr 7 12:32:25 2011
@@ -1,0 +1,197 @@
+#! /bin/sh -e
+## 05_ipv6-support.dpatch: ipv6 support in Net::Server
+##
+## DP: this patch was originally found at
+## DP: http://dev.fiqz.com/svn/fiqz/patches/perl-Net-Server-0.86-ipv6.patch
+## DP:
+## DP: it was then updated by sean finney <seanius at debian.org> to apply against
+## DP: the latest version of Net-Server in debian, and modified for new
+## DP: stricter perl coding/syntax conventions.
+## DP:
+## DP: after that, it was improved by Carsten Wolff <carsten at wolffcarsten.de>
+## DP: to make it work with all Net::Server personalities and to make the code
+## DP: a little nicer.
+## DP:
+## DP: There's an outstanding issue with Net::CIDR::cidrlookup, when the listening
+## DP: socket is an IPv4/IPv6 wildcard socket, but this should be fixed in Net::CIDR
+## DP: rather than worked around here.
+
+if [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch -f --no-backup-if-mismatch -p0 < $0;;
+ -unpatch) patch -f --no-backup-if-mismatch -R -p0 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+ at DPATCH@
+diff -ur lib.orig/Net/Server/Proto/SSLEAY.pm lib/Net/Server/Proto/SSLEAY.pm
+--- lib.orig/Net/Server/Proto/SSLEAY.pm 2010-07-09 18:44:48.000000000 +0200
++++ lib/Net/Server/Proto/SSLEAY.pm 2011-04-06 16:32:19.835579843 +0200
+@@ -23,7 +23,7 @@
+
+ use strict;
+ use vars qw($VERSION $AUTOLOAD @ISA);
+-use IO::Socket::INET;
++use IO::Socket::INET6;
+ use Fcntl ();
+ use Errno ();
+ use Socket ();
+@@ -38,7 +38,7 @@
+ }
+
+ $VERSION = $Net::Server::VERSION; # done until separated
+- at ISA = qw(IO::Socket::INET);
++ at ISA = qw(IO::Socket::INET6);
+
+ sub object {
+ my $type = shift;
+@@ -48,9 +48,12 @@
+ my $prop = $server->{'server'};
+ my $host;
+
+- if ($port =~ m/^([\w\.\-\*\/]+):(\w+)$/) { # allow for things like "domain.com:80"
++ if ($port =~ m/^([\w\.\-\*\/]+):(\w+)$/) { # allow for things like "domain.com:80" (IPv4)
+ ($host, $port) = ($1, $2);
+ }
++ elsif( $port =~ m/^\[([\:\w\.\-\*\/]+)\]:(\w+)$/ ){ # allow for things like "[::1]:80" (IPv6)
++ ($host,$port) = ($1,$2);
++ }
+ elsif ($port =~ /^(\w+)$/) { # allow for things like "80"
+ ($host, $port) = ($default_host, $1);
+ }
+diff -ur lib.orig/Net/Server/Proto/SSL.pm lib/Net/Server/Proto/SSL.pm
+--- lib.orig/Net/Server/Proto/SSL.pm 2010-05-05 05:13:03.000000000 +0200
++++ lib/Net/Server/Proto/SSL.pm 2011-04-05 14:39:39.788076698 +0200
+@@ -39,10 +39,14 @@
+ my $prop = $server->{server};
+ my $host;
+
+- ### allow for things like "domain.com:80"
++ ### allow for things like "domain.com:80" (IPv4)
+ if( $port =~ m/^([\w\.\-\*\/]+):(\w+)$/ ){
+ ($host,$port) = ($1,$2);
+
++ ### allow for things like "[::1]:80" (IPv6)
++ }elsif( $port =~ m/^\[([\:\w\.\-\*\/]+)\]:(\w+)$/ ){
++ ($host,$port) = ($1,$2);
++
+ ### allow for things like "80"
+ }elsif( $port =~ /^(\w+)$/ ){
+ ($host,$port) = ($default_host,$1);
+diff -ur lib.orig/Net/Server/Proto/TCP.pm lib/Net/Server/Proto/TCP.pm
+--- lib.orig/Net/Server/Proto/TCP.pm 2010-05-05 06:41:08.000000000 +0200
++++ lib/Net/Server/Proto/TCP.pm 2011-04-05 14:29:26.123577536 +0200
+@@ -23,10 +23,10 @@
+
+ use strict;
+ use vars qw($VERSION $AUTOLOAD @ISA);
+-use IO::Socket ();
++use IO::Socket::INET6 ();
+
+ $VERSION = $Net::Server::VERSION; # done until separated
+- at ISA = qw(IO::Socket::INET);
++ at ISA = qw(IO::Socket::INET6);
+
+ sub object {
+ my $type = shift;
+@@ -35,10 +35,14 @@
+ my ($default_host,$port,$server) = @_;
+ my $host;
+
+- ### allow for things like "domain.com:80"
++ ### allow for things like "domain.com:80" (IPv4)
+ if( $port =~ m/^([\w\.\-\*\/]+):(\w+)$/ ){
+ ($host,$port) = ($1,$2);
+
++ ### allow for things like "[::1]:80" (IPv6)
++ }elsif( $port =~ m/^\[([\:\w\.\-\*\/]+)\]:(\w+)$/ ){
++ ($host,$port) = ($1,$2);
++
+ ### allow for things like "80"
+ }elsif( $port =~ /^(\w+)$/ ){
+ ($host,$port) = ($default_host,$1);
+diff -ur lib.orig/Net/Server.pm lib/Net/Server.pm
+--- lib.orig/Net/Server.pm 2010-07-09 16:55:31.000000000 +0200
++++ lib/Net/Server.pm 2011-04-06 16:33:57.739576765 +0200
+@@ -25,7 +25,8 @@
+
+ use strict;
+ use vars qw($VERSION);
+-use Socket qw(inet_aton inet_ntoa AF_INET AF_UNIX SOCK_DGRAM SOCK_STREAM);
++use Socket qw(unpack_sockaddr_in sockaddr_family AF_INET AF_INET6 AF_UNIX SOCK_DGRAM SOCK_STREAM);
++use Socket6 qw(inet_ntop inet_pton unpack_sockaddr_in6);
+ use IO::Socket ();
+ use IO::Select ();
+ use POSIX ();
+@@ -356,7 +357,7 @@
+ push @{ $prop->{host} }, (($prop->{host}->[-1]) x (@{ $prop->{port} } - @{ $prop->{host}})); # augment hosts with as many as port
+ foreach my $host (@{ $prop->{host} }) {
+ $host = '*' if ! defined $host || ! length $host;;
+- $host = ($host =~ /^([\w\.\-\*\/]+)$/) ? $1 : $self->fatal("Unsecure host \"$host\"");
++ $host = ($host =~ /^([\[\]\:\w\.\-\*\/]+)$/) ? $1 : $self->fatal("Unsecure host \"$host\"");
+ }
+
+ $prop->{proto} = [] if ! defined $prop->{proto};
+@@ -757,12 +758,14 @@
+ ### read information about this connection
+ my $sockname = getsockname( $sock );
+ if( $sockname ){
++ $prop->{sockfamily} = sockaddr_family( $sockname );
+ ($prop->{sockport}, $prop->{sockaddr})
+- = Socket::unpack_sockaddr_in( $sockname );
+- $prop->{sockaddr} = inet_ntoa( $prop->{sockaddr} );
++ = ($prop->{sockfamily} == AF_INET6) ? unpack_sockaddr_in6( $sockname ) : unpack_sockaddr_in( $sockname );
++ $prop->{sockaddr} = inet_ntop( $prop->{sockfamily}, $prop->{sockaddr} );
+
+ }else{
+ ### does this only happen from command line?
++ $prop->{sockfamily} = AF_INET;
+ $prop->{sockaddr} = $ENV{'REMOTE_HOST'} || '0.0.0.0';
+ $prop->{sockhost} = 'inet.test';
+ $prop->{sockport} = 0;
+@@ -773,17 +776,17 @@
+ if( $prop->{udp_true} ){
+ $proto_type = 'UDP';
+ ($prop->{peerport} ,$prop->{peeraddr})
+- = Socket::sockaddr_in( $prop->{udp_peer} );
++ = ($prop->{sockfamily} == AF_INET6) ? unpack_sockaddr_in6( $prop->{udp_peer} ) : unpack_sockaddr_in( $prop->{udp_peer} );
+ }elsif( $prop->{peername} = getpeername( $sock ) ){
+ ($prop->{peerport}, $prop->{peeraddr})
+- = Socket::unpack_sockaddr_in( $prop->{peername} );
++ = ($prop->{sockfamily} == AF_INET6) ? unpack_sockaddr_in6( $prop->{peername} ) : unpack_sockaddr_in( $prop->{peername} );
+ }
+
+ if( $prop->{peername} || $prop->{udp_true} ){
+- $prop->{peeraddr} = inet_ntoa( $prop->{peeraddr} );
++ $prop->{peeraddr} = inet_ntop( $prop->{sockfamily}, $prop->{peeraddr} );
+
+ if( defined $prop->{reverse_lookups} ){
+- $prop->{peerhost} = gethostbyaddr( inet_aton($prop->{peeraddr}), AF_INET );
++ $prop->{peerhost} = gethostbyaddr( inet_pton($prop->{sockfamily}, $prop->{peeraddr}), $prop->{sockfamily} );
+ }
+ $prop->{peerhost} = '' unless defined $prop->{peerhost};
+
+@@ -803,7 +806,6 @@
+ ### user customizable hook
+ sub post_accept_hook {}
+
+-
+ ### perform basic allow/deny service
+ sub allow_deny {
+ my $self = shift;
+@@ -1145,7 +1147,7 @@
+ or $self->fatal("Can't dup socket [$!]");
+
+ ### hold on to the socket copy until exec
+- $prop->{_HUP}->[$i] = IO::Socket::INET->new;
++ $prop->{_HUP}->[$i] = IO::Socket::INET6->new();
+ $prop->{_HUP}->[$i]->fdopen($fd, 'w')
+ or $self->fatal("Can't open to file descriptor [$!]");
+
Propchange: trunk/libnet-server-perl/debian/patches/05_ipv6-support.dpatch
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/libnet-server-perl/debian/patches/06_cidr-workaround.dpatch
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libnet-server-perl/debian/patches/06_cidr-workaround.dpatch?rev=72321&op=file
==============================================================================
--- trunk/libnet-server-perl/debian/patches/06_cidr-workaround.dpatch (added)
+++ trunk/libnet-server-perl/debian/patches/06_cidr-workaround.dpatch Thu Apr 7 12:32:25 2011
@@ -1,0 +1,58 @@
+#! /bin/sh -e
+## 06_cidr-workaround.dpatch: workaround for bug in Net::CIDR::cidrlookup()
+##
+## DP: this patch was created by Carsten Wolff <carsten at wolffcarsten.de>
+## DP: It should be removed after the problem is fixed in libnet-cidr-perl
+
+if [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1;;
+esac
+
+exit 0
+
+ at DPATCH@
+diff -ur libnet-server-perl.orig/lib/Net/Server.pm libnet-server-perl.new/lib/Net/Server.pm
+--- libnet-server-perl.orig/lib/Net/Server.pm 2011-04-07 11:44:54.973953140 +0200
++++ libnet-server-perl.new/lib/Net/Server.pm 2011-04-07 14:11:28.637453856 +0200
+@@ -824,25 +824,29 @@
+ && $#{ $prop->{cidr_allow} } == -1
+ && $#{ $prop->{cidr_deny} } == -1;
+
++ ### work around Net::CIDR::cidrlookup() croaking,
++ ### if first parameter is an IPv4 address in IPv6 notation.
++ my $peeraddr = ($prop->{peeraddr} =~ /^\s*::ffff:([0-9.]+\s*)$/) ? $1 : $prop->{peeraddr};
++
+ ### if the addr or host matches a deny, reject it immediately
+ foreach ( @{ $prop->{deny} } ){
+ return 0 if $prop->{peerhost} =~ /^$_$/ && defined($prop->{reverse_lookups});
+- return 0 if $prop->{peeraddr} =~ /^$_$/;
++ return 0 if $peeraddr =~ /^$_$/;
+ }
+ if ($#{ $prop->{cidr_deny} } != -1) {
+ require Net::CIDR;
+- return 0 if Net::CIDR::cidrlookup($prop->{peeraddr}, @{ $prop->{cidr_deny} });
++ return 0 if Net::CIDR::cidrlookup($peeraddr, @{ $prop->{cidr_deny} });
+ }
+
+
+ ### if the addr or host isn't blocked yet, allow it if it is allowed
+ foreach ( @{ $prop->{allow} } ){
+ return 1 if $prop->{peerhost} =~ /^$_$/ && defined($prop->{reverse_lookups});
+- return 1 if $prop->{peeraddr} =~ /^$_$/;
++ return 1 if $peeraddr =~ /^$_$/;
+ }
+ if ($#{ $prop->{cidr_allow} } != -1) {
+ require Net::CIDR;
+- return 1 if Net::CIDR::cidrlookup($prop->{peeraddr}, @{ $prop->{cidr_allow} });
++ return 1 if Net::CIDR::cidrlookup($peeraddr, @{ $prop->{cidr_allow} });
+ }
+
+ return 0;
Propchange: trunk/libnet-server-perl/debian/patches/06_cidr-workaround.dpatch
------------------------------------------------------------------------------
svn:executable = *
More information about the Pkg-perl-cvs-commits
mailing list