> > Did that patch fix the bug for everybody?  If so, I want to commit
it.
> > I have a three hour meeting now, so I'm not going to have time to
> > though.  Can somebody else commit it this afternoon if it works?
> 
> Thanks Ryan, with your patch we longer trap in the SSI testcase but
> I have a question. In make_sub_request where the filter pointers
> are copied, why this:
> 
>  rnew->proto_output_filters = r->connection->output_filters;

That would be a bug, and a pretty big one at that.  How in the world did
that slip through all this time.  :-(

> rnew->output_filters is pointing to the remainder of the
> main chain (next_filter) and rnew->proto_output_filters is
> not pointing to the proto part of it. Is this just a
> placeholder in case some subrequest code tries to add
> a proto filter?

Ah, this is how it slipped through.  Because r->output_filters is setup
correctly, and r->proto_output_filters should never be modified by a
sub-request, this will work.  Of course, it is incorrect, and should be
fixed.  I'll fix it along with the other patch.  Thanks for catching
this.

> My only other observation is that any filters added in the subreq
> must only be added to the top of the rnew->output_filters
> chain or must be cleanly removed before the subreq returns
> otherwise the main chain will get corrupted. I haven't seen
> this happen so far, so maybe this is just a hypothetical
> concern.

It isn't hypothetical, but it also isn't a bug we want to protect
against.  The thing is that the filters added in the subrequest by
definition must be resource filters, which means that they must be added
above protocol and connection filters.  If you are adding either a
protocol or connection filter in a sub request, then you are doing
something incredibly wrong, and we want the server to fail.

Ryan


Reply via email to