*) Fix a compile failure with recent OpenSSL and picky compilers
(e.g., OpenSSL 0.9.7a and xlc_r on AIX). [Jeff Trawick]
- *) Do not bypass output filters when redirecting subrequests internally.
- PR 17629. [André Malo]
-
*) OpenSSL headers should be included as "openssl/ssl.h", and not rely on
the INCLUDE path to be defined properly.
PR 11310. [Geoff Thrope <geoff@geoffthorpe.net>]
APACHE 2.1 STATUS: -*-text-*-
-Last modified at [$Date: 2003/05/21 16:21:19 $]
+Last modified at [$Date: 2003/05/29 15:07:11 $]
Release [NOTE that only Alpha/Beta releases occur in 2.1 development]:
RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
+ * Filter stacks and subrequests, redirects and fast redirects.
+ There's at least one PR that suffers from the current unclean behaviour
+ (which lets the server send garbage): PR 17629
+ nd says: Every subrequest should get its own filter stack with the
+ subreq_core filter as bottom-most. That filter does two things:
+ - swallow EOS buckets
+ - redirect the data stream to the upper request's (rr->main)
+ filter chain directly after the subrequest's starting
+ point.
+ Once we have a clean solution, we can try to optimize
+ it, so that the server won't be slow down too much.
+
* RFC 2616 violations.
Closed PRs: 15857.
Open PRs: 15852, 15859, 15861, 15864, 15865, 15866, 15868, 15869,
new->proto_output_filters = r->proto_output_filters;
new->proto_input_filters = r->proto_input_filters;
- if (new->main) {
- new->output_filters = r->output_filters;
- new->input_filters = r->input_filters;
+ new->output_filters = new->proto_output_filters;
+ new->input_filters = new->proto_input_filters;
+ if (new->main) {
/* Add back the subrequest filter, which we lost when
* we set output_filters to include only the protocol
* output filters from the original request.
- *
- * XXX: This shouldn't be neccessary any longer, because the filter
- * is still in place -- isn't it?
*/
ap_add_output_filter_handle(ap_subreq_core_filter_handle,
NULL, new, new->connection);
}
- else {
- /* In subrequests we _must_ point to the complete upper request's
- * filter chain, so skip the filters _only_ within the main request.
- */
- new->output_filters = new->proto_output_filters;
- new->input_filters = new->proto_input_filters;
- }
update_r_in_filters(new->input_filters, r, new);
update_r_in_filters(new->output_filters, r, new);
r->subprocess_env = apr_table_overlay(r->pool, rr->subprocess_env,
r->subprocess_env);
- /* copy the filters _only_ within the main request. In subrequests
- * we _must_ point to the upper requests' filter chain, so do not
- * touch 'em!
- */
- if (!r->main) {
- r->output_filters = rr->output_filters;
- r->input_filters = rr->input_filters;
- }
+ r->output_filters = rr->output_filters;
+ r->input_filters = rr->input_filters;
if (r->main) {
- /* XXX: This shouldn't be neccessary any longer, because the filter
- * is still in place -- isn't it?
- */
ap_add_output_filter_handle(ap_subreq_core_filter_handle,
NULL, r, r->connection);
}