hi all

t/apache/limits.t has one failure on Apache 1.3 - a chunked body that
exceeds the limits.  2.0/2.1 returns 413 (entity too large) while 1.3
returns 400 (bad request).

after looking at the code in 1.3 I think this is intentional -
ap_get_client_block specifically handles this condition, while the 2.0 tree
seems to handle it elsewhere.

furthermore, it seems people were aware of this at the time (over 2 years
ago) - the comments from version 1.4 are

        Whew!  Now tests upload chunking properly -- but Apache 1.3
        may be responding with a 400 when it should be a 413.  Many
        thanks to Doug MacEachern and Gisle Aas for their help with
        getting the HTTP/1.1 chunking stuff working.

so, at this point I'm convinced that 1.3 and 2.0 geniunely differ in this
respect.  so, assuming that this is a legacy behavior in 1.3 that will
probably never be addressed, here is a patch to set 1.3 expectations.  if
there are feelings that it should be marked as TODO, please let me know.

--Geoff
Index: t/apache/limits.t
===================================================================
RCS file: /home/cvspublic/httpd-test/perl-framework/t/apache/limits.t,v
retrieving revision 1.12
diff -u -r1.12 limits.t
--- t/apache/limits.t   9 May 2002 07:14:36 -0000       1.12
+++ t/apache/limits.t   10 Dec 2003 19:24:30 -0000
@@ -59,11 +59,13 @@
 my $subtests = (@conditions * 2) + 2;
 plan tests => $subtests, \&have_lwp;
 
+use vars qw($expected_rc);
+
 my $testnum = 1;
 foreach my $cond (@conditions) {
     foreach my $goodbad (qw(succeed fail)) {
         my $param = $params{"$cond-$goodbad"};
-        my $expected_rc = $xrcs{"$cond-$goodbad"};
+        $expected_rc = $xrcs{"$cond-$goodbad"};
         my $resp;
         if ($cond eq 'fieldcount') {
             my %fields;
@@ -109,6 +111,14 @@
                         $req->header('X-Subtest' => $testnum);
                         $req->content(chunk_it($param));
                         $resp = Apache::TestRequest::user_agent->request($req);
+
+                        # limit errors with chunked request bodies get
+                        # 400 with 1.3, not 413 - see special chunked
+                        # request handling in ap_get_client_block in 1.3
+
+                        local $expected_rc = 400 if $goodbad eq 'fail' &&
+                                                    have_apache(1); 
+
                         ok t_cmp($expected_rc,
                                  $resp->code,
                                  "Test #$testnum");

Reply via email to