From 44c10702d8c42a545795c979bf5e401c25dbfa0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Fri, 8 Mar 2013 15:07:49 +0100 Subject: [PATCH] Honor time-out --- ...04-we-don-t-need-our-own-can_read-an.patch | 75 +++++++++++++++++++ perl-libwww-perl.spec | 19 +++-- 2 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 libwww-perl-6.04-With-Net-HTTP-6.04-we-don-t-need-our-own-can_read-an.patch diff --git a/libwww-perl-6.04-With-Net-HTTP-6.04-we-don-t-need-our-own-can_read-an.patch b/libwww-perl-6.04-With-Net-HTTP-6.04-we-don-t-need-our-own-can_read-an.patch new file mode 100644 index 0000000..ad25cbe --- /dev/null +++ b/libwww-perl-6.04-With-Net-HTTP-6.04-we-don-t-need-our-own-can_read-an.patch @@ -0,0 +1,75 @@ +From 6794fa73e92d63e973b38f97299b4181bdd7ee8b Mon Sep 17 00:00:00 2001 +From: Gisle Aas +Date: Thu, 8 Nov 2012 21:07:33 +0100 +Subject: [PATCH] With Net::HTTP 6.04 we don't need our own can_read() and + sysread override + +--- + Makefile.PL | 2 +- + lib/LWP/Protocol/http.pm | 37 ------------------------------------- + 2 files changed, 1 insertion(+), 38 deletions(-) + +diff --git a/Makefile.PL b/Makefile.PL +index a6f808e..87075b4 100644 +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -61,7 +61,7 @@ WriteMakefile( + 'LWP::MediaTypes' => 6, + 'MIME::Base64' => "2.1", + 'Net::FTP' => "2.58", +- 'Net::HTTP' => 6, ++ 'Net::HTTP' => "6.04", + 'URI' => "1.10", + 'URI::Escape' => 0, + 'WWW::RobotRules' => 6, +diff --git a/lib/LWP/Protocol/http.pm b/lib/LWP/Protocol/http.pm +index 8d7c6d9..d0583d4 100644 +--- a/lib/LWP/Protocol/http.pm ++++ b/lib/LWP/Protocol/http.pm +@@ -446,43 +446,6 @@ sub request + #----------------------------------------------------------- + package LWP::Protocol::http::SocketMethods; + +-sub sysread { +- my $self = shift; +- if (my $timeout = ${*$self}{io_socket_timeout}) { +- die "read timeout" unless $self->can_read($timeout); +- } +- else { +- # since we have made the socket non-blocking we +- # use select to wait for some data to arrive +- $self->can_read(undef) || die "Assert"; +- } +- sysread($self, $_[0], $_[1], $_[2] || 0); +-} +- +-sub can_read { +- my($self, $timeout) = @_; +- my $fbits = ''; +- vec($fbits, fileno($self), 1) = 1; +- SELECT: +- { +- my $before; +- $before = time if $timeout; +- my $nfound = select($fbits, undef, undef, $timeout); +- if ($nfound < 0) { +- if ($!{EINTR} || $!{EAGAIN}) { +- # don't really think EAGAIN can happen here +- if ($timeout) { +- $timeout -= time - $before; +- $timeout = 0 if $timeout < 0; +- } +- redo SELECT; +- } +- die "select failed: $!"; +- } +- return $nfound > 0; +- } +-} +- + sub ping { + my $self = shift; + !$self->can_read(0); +-- +1.8.1.4 + diff --git a/perl-libwww-perl.spec b/perl-libwww-perl.spec index 72d6f81..9c6eae8 100644 --- a/perl-libwww-perl.spec +++ b/perl-libwww-perl.spec @@ -1,11 +1,13 @@ Name: perl-libwww-perl Version: 6.04 -Release: 4%{?dist} +Release: 5%{?dist} Summary: A Perl interface to the World-Wide Web Group: Development/Libraries License: GPL+ or Artistic URL: http://search.cpan.org/dist/libwww-perl/ Source0: http://www.cpan.org/authors/id/G/GA/GAAS/libwww-perl-%{version}.tar.gz +# Fix time-out, bug #919448, CPAN RT#81799, in upstream after 6.04 +Patch0: libwww-perl-6.04-With-Net-HTTP-6.04-we-don-t-need-our-own-can_read-an.patch BuildArch: noarch BuildRequires: perl(Digest::MD5) BuildRequires: perl(Encode) >= 2.12 @@ -28,14 +30,14 @@ BuildRequires: perl(IO::Socket) BuildRequires: perl(LWP::MediaTypes) >= 6 BuildRequires: perl(MIME::Base64) >= 2.1 BuildRequires: perl(Net::FTP) >= 2.58 -BuildRequires: perl(Net::HTTP) >= 6 +BuildRequires: perl(Net::HTTP) >= 6.04 BuildRequires: perl(URI) >= 1.10 BuildRequires: perl(URI::Escape) BuildRequires: perl(WWW::RobotRules) >= 6 # Tests only: BuildRequires: perl(Config) BuildRequires: perl(Test::More) -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) Requires: perl(Encode) >= 2.12 Requires: perl(File::Listing) >= 6 Requires: perl(HTML::Entities) @@ -51,7 +53,7 @@ Requires: perl(HTTP::Status) >= 6 Requires: perl(LWP::MediaTypes) >= 6 Requires: perl(MIME::Base64) >= 2.1 Requires: perl(Net::FTP) >= 2.58 -Requires: perl(Net::HTTP) >= 6 +Requires: perl(Net::HTTP) >= 6.04 Requires: perl(URI) >= 1.10 Requires: perl(URI::Escape) Requires: perl(WWW::RobotRules) >= 6 @@ -82,16 +84,16 @@ use and even classes that help you implement simple HTTP servers. %prep %setup -q -n libwww-perl-%{version} +%patch0 -p1 %build # Install the aliases by default -%{__perl} Makefile.PL INSTALLDIRS=perl --aliases < /dev/null +perl Makefile.PL INSTALLDIRS=perl --aliases < /dev/null make %{?_smp_mflags} %install -make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT +make pure_install DESTDIR=$RPM_BUILD_ROOT find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';' -find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null ';' chmod -R u+w $RPM_BUILD_ROOT/* %check @@ -108,6 +110,9 @@ make test %{_mandir}/man3/*.3* %changelog +* Fri Mar 08 2013 Petr Pisar - 6.04-5 +- Honor time-out (bug #919448) + * Thu Feb 14 2013 Fedora Release Engineering - 6.04-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild