httpd-apreq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bojan Smojver <bo...@rexursive.com>
Subject Re: Endless loop in split_on_bdry() of library/parser_multipart.c?
Date Tue, 30 May 2006 22:10:04 GMT
Quoting "Philip M. Gollucci" <pgollucci@p6m7g8.com>:

> You might try using Apache2::DebugFilter to see what buckets are
> getting passed, but I think
> the apreq filter is hooked before that.

I'm guessing this is a Perl thing. I'm in C, so this probably isn't  
going to be very useful. I'm watching the whole thing in gdb anyway.

> Being that bucket brigades are doubly linked circular lists, and the
> code is checking it hasn't looped on the list (aka ring) yet, it must
> be missing it.  Probably because it got removed from it (in).  Maybe we
> need to save the first bucket of the list somewhere. and change the
> comparison.

This code is hit when there is a partial match. In this particular  
case, the boundary is set to "\r\n--LYNX". The partial match is "\r"  
and off is set to 1. However, the ending condition seems to be never  
met in that while loop.

To make matters worse, it's not as straightforward as one would think.  
The whole thing seems to depend on how the buckets are lined up inside  
the brigade. And, compiler options appear to affect the whole thing as  
well. With -O2, I can see the problem. With -O0, I can't.

I'll keep looking...

-- 
Bojan

Mime
View raw message