Return-Path: X-Original-To: apmail-perl-modperl-cvs-archive@www.apache.org Delivered-To: apmail-perl-modperl-cvs-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id AB7831184D for ; Thu, 11 Sep 2014 07:47:04 +0000 (UTC) Received: (qmail 47906 invoked by uid 500); 11 Sep 2014 07:47:04 -0000 Delivered-To: apmail-perl-modperl-cvs-archive@perl.apache.org Received: (qmail 47709 invoked by uid 500); 11 Sep 2014 07:47:04 -0000 Mailing-List: contact modperl-cvs-help@perl.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@perl.apache.org List-Id: Delivered-To: mailing list modperl-cvs@perl.apache.org Received: (qmail 47698 invoked by uid 99); 11 Sep 2014 07:47:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Sep 2014 07:47:04 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Sep 2014 07:46:42 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A764B238899C; Thu, 11 Sep 2014 07:46:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1624218 - in /perl/modperl/trunk/t/response/TestApache: read2.pm read3.pm Date: Thu, 11 Sep 2014 07:46:40 -0000 To: modperl-cvs@perl.apache.org From: stevehay@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140911074640.A764B238899C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: stevehay Date: Thu Sep 11 07:46:40 2014 New Revision: 1624218 URL: http://svn.apache.org/r1624218 Log: Don't answer anything to the client before it's done sending the POST data LWP::Protocol::http sends long POST requests with several write() calls. If it gets a response with a full HTTP header (up to the two newlines) before it's done with the later write() calls sending the actual POST data, it will stop writing. This leads to a deadlock and a test failure after timeout. The problem only shows up with large POSTED strings like the one in read3.pm, but update read2.pm too for correctness. Thread at http://mail-archives.apache.org/mod_mbox/perl-dev/201408.mbox/%3C20140809104131.GA3670@estella.local.invalid%3E Bug-Debian: https://bugs.debian.org/697682 Patch by Niko Tyni . Modified: perl/modperl/trunk/t/response/TestApache/read2.pm perl/modperl/trunk/t/response/TestApache/read3.pm Modified: perl/modperl/trunk/t/response/TestApache/read2.pm URL: http://svn.apache.org/viewvc/perl/modperl/trunk/t/response/TestApache/read2.pm?rev=1624218&r1=1624217&r2=1624218&view=diff ============================================================================== --- perl/modperl/trunk/t/response/TestApache/read2.pm (original) +++ perl/modperl/trunk/t/response/TestApache/read2.pm Thu Sep 11 07:46:40 2014 @@ -20,8 +20,6 @@ my $expected = "foobar"; sub handler { my $r = shift; - plan $r, tests => 1; - # test the case where the buffer to be filled has set magic # attached. which is the case when one passes an non-existing hash # entry value. it's not autovivified when passed to the function @@ -30,6 +28,10 @@ sub handler { my $data; my $len = $r->read($data->{buffer}, $r->headers_in->{'Content-Length'}); + # only print the plan out after reading to avoid chances of a deadlock + # see http://mail-archives.apache.org/mod_mbox/perl-dev/201408.mbox/%3C20140809104131.GA3670@estella.local.invalid%3E + plan $r, tests => 1; + ok t_cmp($data->{buffer}, $expected, "reading into an autovivified hash entry"); Modified: perl/modperl/trunk/t/response/TestApache/read3.pm URL: http://svn.apache.org/viewvc/perl/modperl/trunk/t/response/TestApache/read3.pm?rev=1624218&r1=1624217&r2=1624218&view=diff ============================================================================== --- perl/modperl/trunk/t/response/TestApache/read3.pm (original) +++ perl/modperl/trunk/t/response/TestApache/read3.pm Thu Sep 11 07:46:40 2014 @@ -20,8 +20,6 @@ my $expected = "foobar"x2000; sub handler { my $r = shift; - plan $r, tests => 1; - # test to read data up to end of file is signaled my $data = ''; my $where = 0; @@ -31,6 +29,10 @@ sub handler { $where += $len; } while ($len > 0); + # only print the plan out after reading to avoid chances of a deadlock + # see http://mail-archives.apache.org/mod_mbox/perl-dev/201408.mbox/%3C20140809104131.GA3670@estella.local.invalid%3E + plan $r, tests => 1; + ok t_cmp($data, $expected, "reading up to end of file"); Apache2::Const::OK;