On Tue, Sep 10, 2002 at 05:55:27PM +0100, Gary Benson wrote:
> I've been trying to write some tests and have been trying to send POST
> requests with no body. It seems that Apache::TestRequest::POST only
> adds a Content-Length when the length of the content is nonzero, so
> attempts to 'POST "/foo/bar", ""' result in a 411 Length Required from
> httpd.
>
> I'm not nearly good enough with Perl to work out where POST is defined;
> can anyone point me in the direction of what I need to change to cause a
> content-length to be added to all POST requests?
So I eventually managed to make a workaround for this (attached). I'm
still not sure if httpd-test is the correct place for the fix or whether
I should be fixing LWP so I won't commit it.
Cheers,
Gary
[ [EMAIL PROTECTED] ][ GnuPG 85A8F78B ][ http://inauspicious.org/ ]
Content-length headers don't seem to get added to POST requests with
empty bodies, causing httpd to return a 411 Length Required.
Index: perl-framework/Apache-Test/lib/Apache/TestRequest.pm
===
RCS file:
/home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestRequest.pm,v
retrieving revision 1.71
diff -u -r1.71 TestRequest.pm
--- perl-framework/Apache-Test/lib/Apache/TestRequest.pm4 Apr 2002
00:54:26 - 1.71
+++ perl-framework/Apache-Test/lib/Apache/TestRequest.pm11 Sep 2002
09:47:55 -
@@ -386,6 +386,9 @@
unless ($shortcut) {
#GET, HEAD, POST
+if ($r->method eq "POST" && !defined($r->header("Content-Length"))) {
+$r->header('Content-Length' => length($r->content));
+}
$r = $UA ? $UA->request($r) : $r;
my $proto = $r->protocol;
if (defined($proto)) {