Only reinject stream if data is changed by rsub

This commit is contained in:
brenosilva
2011-06-15 14:38:42 +00:00
parent 3d69126de0
commit ad168c801d
3 changed files with 12 additions and 2 deletions

View File

@@ -84,7 +84,7 @@ apr_status_t input_filter(ap_filter_t *f, apr_bucket_brigade *bb_out,
return APR_EGENERAL;
}
if (chunk && !msr->txcfg->stream_inbody_inspection) {
if (chunk && (!msr->txcfg->stream_inbody_inspection || msr->if_stream_changed == 0)) {
/* Copy the data we received in the chunk */
bucket = apr_bucket_heap_create(chunk->data, chunk->length, NULL,
f->r->connection->bucket_alloc);
@@ -114,6 +114,9 @@ apr_status_t input_filter(ap_filter_t *f, apr_bucket_brigade *bb_out,
}
} else if (msr->stream_input_data != NULL) {
if(msr->if_stream_changed == 1)
msr->if_stream_changed = 0;
bucket = apr_bucket_heap_create(msr->stream_input_data, msr->stream_input_length, NULL,
f->r->connection->bucket_alloc);
@@ -913,7 +916,10 @@ apr_status_t output_filter(ap_filter_t *f, apr_bucket_brigade *bb_in) {
* (full-buffering only).
*/
if ((msr->of_skipping == 0)&&(!msr->of_partial)) {
inject_content_to_of_brigade(msr,f);
if(msr->of_stream_changed == 1) {
inject_content_to_of_brigade(msr,f);
msr->of_stream_changed = 0;
}
prepend_content_to_of_brigade(msr, f);
/* Inject content into response (append & buffering). */