httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Malo ...@perlig.de>
Subject Re: Two mod_include problems
Date Wed, 09 Jul 2003 22:54:26 GMT
* Ron Park wrote:

> At line 438 of mod_include, we see the code is set up to handle
> this 'left over partial match' and it increments the temporary
> buffer pointer, c, by 2 as it walks past the '--' at the start
> of this bucket.  So it (as far as I could determine) adds the
> left over '<!' to this bucket

That's a misreading. It doesn't prepend the bucket, it prepends the brigade,
leaving the bucket untouched. That way...

> and continues on, calling the
> quick scanner function, bndm(), passing in the recently updated
> parameter 'c'.

... here comes the obvious failure. c is the wrong pointer. It must be buf
(i.e. start of the bucket content). Then pos should be correct. The following
solves this problem finally (for me):

Index: modules/filters/mod_include.c
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/filters/mod_include.c,v
retrieving revision 1.233
diff -u -r1.233 mod_include.c
--- modules/filters/mod_include.c       3 Feb 2003 17:53:01 -0000       1.233
+++ modules/filters/mod_include.c       9 Jul 2003 22:43:46 -0000
@@ -477,7 +477,7 @@

         if (len)
         {
-            pos = bndm(str, slen, c, len, ctx->start_seq_pat);
+            pos = bndm(str, slen, buf, len, ctx->start_seq_pat);
             if (pos != len)
             {
                 ctx->head_start_bucket = dptr;

(Note that is even more logically, since len is also untouched).

digging into the second problem now...

Thanks for your deep investigation!

nd

Mime
View raw message