httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bill Stoddard <b...@wstoddard.com>
Subject Re: [PATCH] Move http header parsing into the http_input_filter
Date Tue, 25 Feb 2003 18:47:00 GMT

>> Index: server/protocol.c
>> ===================================================================
>> RCS file: /home/cvs/httpd-2.0/server/protocol.c,v
>> retrieving revision 1.127
>> diff -u -r1.127 protocol.c
>> --- server/protocol.c    3 Feb 2003 17:53:19 -0000    1.127
>> +++ server/protocol.c    24 Feb 2003 17:03:21 -0000
>> @@ -923,117 +924,16 @@
>> ...
>> +    r->connection->r = r;
>> +    bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
>> +    rv = ap_get_brigade(r->input_filters, bb, AP_MODE_READBYTES,
>> +                        APR_BLOCK_READ, HUGE_STRING_LEN);
>> +    apr_brigade_destroy(bb);
> 
> 
> Um, what?  I think this is how you are trying to get around when to
> call the input filter.  This is extremely bogus.  You can't read
> data and then throw it away.  And, no, setaside isn't the answer
> (sorry, OtherBill).

I have to responds to this (even though I am up to my ears in other 
work)... If bb contains -any- bytes after after the call to 
ap_get_brigade(), then there is something wrong (that is fixable) in the 
filter stack. As I envision how this should operate, bb should be empty 
when we call apr_brigade_destroy. It it is not, then something else is 
broken.

And you are right that ap_brigade_getline() is ignoring the possibility 
of getting an EOS bucket. That's a bug in ap_brigade_getline() that can 
easily be fixed. I also chose to implement ap_brigade_getline() in the 
most direct fashion possible (rather than use apr_brigade_splitline, et. 
al.) because it is much more efficient the way I did it. Yes, there is 
some code duplication, but it is minor.

Bill


Mime
View raw message