Worked around mod_jk issue where a 401 response was not including the WWW-Authentication header (MODSEC-16).

This commit is contained in:
brectanus
2008-09-15 19:51:06 +00:00
parent 67c48bfdfb
commit 3848ff5b36
3 changed files with 23 additions and 1 deletions

View File

@@ -378,6 +378,8 @@ static apr_status_t output_filter_init(modsec_rec *msr, ap_filter_t *f,
return -1; /* Invalid. */
}
msr->response_content_length = len;
if (len == 0) {
if (msr->txcfg->debuglog_level >= 4) {
msr_log(msr, 4, "Output filter: Skipping response since Content-Length is zero.");
@@ -676,6 +678,22 @@ apr_status_t output_filter(ap_filter_t *f, apr_bucket_brigade *bb_in) {
}
}
msr->of_done_reading = 1;
}
/* ENH: Probably need to make the handlers for this workaround
* configurable. */
else if ( (strcmp("jakarta-servlet", msr->r->handler) == 0)
&& APR_BUCKET_IS_FLUSH(bucket)
&& (APR_BUCKET_NEXT(bucket) == APR_BRIGADE_SENTINEL(bb_in))
&& (msr->resbody_length == msr->response_content_length))
{
/* A FLUSH sent as the last bucket in the bridade may indicate
* the end of the response for certain modules if the bytes
* received match the response C-L header. In this case, the
* FLUSH bucket is interpreted as an EOS.
*/
msr_log(msr, 4, "Output filter: Interpreted FLUSH as EOS for handler \"%s\".", msr->r->handler);
msr->of_done_reading = 1;
}
}