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 [email protected] 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 <[email protected]> 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);

