httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vlastimil Pavicek <vlastimil.pavi...@centrum.cz>
Subject Re: Traversing the bucket brigade from last to first in the output filter
Date Sun, 15 Oct 2006 21:47:35 GMT

Thank you for your reply, I will try to answer your questions.

> > I got following for the first bucket in this brigade just when I got it:
> > APR_BUCKET_IS_FILE -> 1
> 
> OK, a static file.
> 
> > There are two buckets sized 18567 and 0.
> 
> FILE + EOS.
> 
> > > > b=APR_BRIGADE_LAST(bb);
> > >
> > > If we hypothesize that your input was a single bucket, then it's
> > > 3*100 + LAST.  And what's wrong is the size of LAST at this point.
> > > Is LAST by any chance a Heap bucket?
> 
> So how exactly did you read that last bucket, and what exactly
> did the read function return?  Perhaps you could put your demo
> source code up where we can look at it.

Source code is at 

http://www.volny.cz/jeword/a/mod_txt.c

Some of you might not see this code for the first time :)

The problematic traversal starts at line 222.

> > LAST (size 0):
> > APR_BUCKET_IS_METADATA -> 1
> > APR_BUCKET_IS_EOS -> 1
> >
> > LAST->PREV (size 8000)
> > APR_BUCKET_IS_HEAP -> 1
> 
> I'd guess that's *after* reading it?  What does it look like before?

Before reading:

LAST (size 0):
APR_BUCKET_IS_METADATA -> 1
APR_BUCKET_IS_EOS -> 1

LAST->PREV (size 8000):
APR_BUCKET_IS_FILE -> 1

LAST->PREV->PREV (size 100):
APR_BUCKET_IS_FILE -> 1

LAST->PREV->PREV->PREV (size 100):
APR_BUCKET_IS_FILE -> 1

LAST->PREV->PREV->PREV->PREV (size 100):
APR_BUCKET_IS_FILE -> 1

The brigade stays truncated.

Thank to all for their effort, I look forward to the explanation

Vlastimil Pavicek, CTU Prague

Mime
View raw message