Bug#591462: libwww-perl: redo; outside the scope of the module (LWP/Protocol/http.pm)
clone 591462 -1
submitter -1 !
reassign -1 release.debian.org
retitle -1 pu: libwww-perl/5.813-1+lenny1
tag -1 =
severity -1 normal
user release.debian.org@packages.debian.org
usertag -1 + pu
thanks
Hi,
libwww-perl uses Perl's redo statement incorrectly [1]. This breaks
programs that cause libwww-perl to send a header larger than
8k bytes (and maybe others). This was fixed upstream with the patch
from [2].
I have prepared an update for stable using upstream's patch. Is the
release team okay with uploading this to stable?
Regards,
Ansgar
[1] <http://bugs.debian.org/591462>
[2] <http://rt.cpan.org/Public/Bug/Display.html?id=41116>
diff -u libwww-perl-5.813/debian/changelog libwww-perl-5.813/debian/changelog
--- libwww-perl-5.813/debian/changelog
+++ libwww-perl-5.813/debian/changelog
@@ -1,3 +1,9 @@
+libwww-perl (5.813-1+lenny1) stable; urgency=low
+
+ * Fix incorrect use of redo. (Closes: #591462)
+
+ -- Ansgar Burchardt <ansgar@43-1.org> Wed, 04 Aug 2010 02:52:22 +0900
+
libwww-perl (5.813-1) unstable; urgency=low
* New upstream release.
only in patch2:
unchanged:
--- libwww-perl-5.813.orig/lib/LWP/Protocol/http.pm
+++ libwww-perl-5.813/lib/LWP/Protocol/http.pm
@@ -203,15 +203,16 @@
#print "------\n$req_buf\n------\n";
if (!$has_content || $write_wait || $has_content > 8*1024) {
- do {
+ WRITE:
+ {
# Since this just writes out the header block it should almost
# always succeed to send the whole buffer in a single write call.
my $n = $socket->syswrite($req_buf, length($req_buf));
unless (defined $n) {
- redo if $!{EINTR};
+ redo WRITE if $!{EINTR};
if ($!{EAGAIN}) {
select(undef, undef, undef, 0.1);
- redo;
+ redo WRITE;
}
die "write failed: $!";
}
@@ -221,8 +222,8 @@
else {
select(undef, undef, undef, 0.5);
}
+ redo WRITE if length $req_buf;
}
- while (length $req_buf);
}
my($code, $mess, @junk);
Reply to: