Loading CHANGES +4 −1 Changes for CHANGES: 4 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -2,7 +2,10 @@ Changes with Apache 2.3.12 *) mod_proxy_fcgi: Add support for 'ProxyErrorOverride on' PR 50913. *) mod_proxy_ajp: Add support for 'ProxyErrorOverride on'. PR 50945. [Peter Pramberger <peter pramberger.at>, Jim Jagielski] *) mod_proxy_fcgi: Add support for 'ProxyErrorOverride on'. PR 50913. [Mark Montague <mark catseye.org>, Jim Jagielski] *) core: Change the APIs of ap_cfg_getline() and ap_cfg_getc() to return an Loading modules/proxy/mod_proxy_ajp.c +46 −0 Changes for modules/proxy/mod_proxy_ajp.c: 46 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -190,6 +190,8 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, apr_size_t maxsize = AJP_MSG_BUFFER_SZ; int send_body = 0; apr_off_t content_length = 0; int original_status = r->status; const char *original_status_line = r->status_line; if (psf->io_buffer_size_set) maxsize = psf->io_buffer_size; Loading Loading @@ -430,12 +432,27 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, if (status != APR_SUCCESS) { backend_failed = 1; } else if ((r->status == 401) && conf->error_override) { const char *buf; const char *wa = "WWW-Authenticate"; if ((buf = apr_table_get(r->headers_out, wa))) { apr_table_set(r->err_headers_out, wa, buf); } else { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, "ap_proxy_ajp_request: origin server " "sent 401 without WWW-Authenticate header"); } } headers_sent = 1; break; case CMD_AJP13_SEND_BODY_CHUNK: /* AJP13_SEND_BODY_CHUNK: piece of data */ status = ajp_parse_data(r, conn->data, &size, &send_body_chunk_buff); if (status == APR_SUCCESS) { /* If we are overriding the errors, we can't put the content * of the page into the brigade. */ if (!conf->error_override || !ap_is_HTTP_ERROR(r->status)) { /* AJP13_SEND_BODY_CHUNK with zero length * is explicit flush message */ Loading @@ -452,6 +469,17 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, else { apr_status_t rv; /* Handle the case where the error document is itself reverse * proxied and was successful. We must maintain any previous * error status so that an underlying error (eg HTTP_NOT_FOUND) * doesn't become an HTTP_OK. */ if (conf->error_override && !ap_is_HTTP_ERROR(r->status) && ap_is_HTTP_ERROR(original_status)) { r->status = original_status; r->status_line = original_status_line; } e = apr_bucket_transient_create(send_body_chunk_buff, size, r->connection->bucket_alloc); APR_BRIGADE_INSERT_TAIL(output_brigade, e); Loading Loading @@ -480,11 +508,17 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, data_sent = 1; apr_brigade_cleanup(output_brigade); } } else { backend_failed = 1; } break; case CMD_AJP13_END_RESPONSE: /* If we are overriding the errors, we must not send anything to * the client, especially as the brigade already contains headers. * So do nothing here, and it will be cleaned up below. */ if (!conf->error_override || !ap_is_HTTP_ERROR(r->status)) { e = apr_bucket_eos_create(r->connection->bucket_alloc); APR_BRIGADE_INSERT_TAIL(output_brigade, e); if (ap_pass_brigade(r->output_filters, Loading @@ -495,6 +529,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, } /* XXX: what about flush here? See mod_jk */ data_sent = 1; } request_ended = 1; break; default: Loading Loading @@ -569,8 +604,19 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, "proxy: got response from %pI (%s)", conn->worker->cp->addr, conn->worker->s->hostname); if (conf->error_override && ap_is_HTTP_ERROR(r->status)) { /* clear r->status for override error, otherwise ErrorDocument * thinks that this is a recursive error, and doesn't find the * custom error page */ rv = r->status; r->status = HTTP_OK; } else { rv = OK; } } if (backend_failed) { ap_log_error(APLOG_MARK, APLOG_ERR, status, r->server, Loading Loading
CHANGES +4 −1 Changes for CHANGES: 4 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -2,7 +2,10 @@ Changes with Apache 2.3.12 *) mod_proxy_fcgi: Add support for 'ProxyErrorOverride on' PR 50913. *) mod_proxy_ajp: Add support for 'ProxyErrorOverride on'. PR 50945. [Peter Pramberger <peter pramberger.at>, Jim Jagielski] *) mod_proxy_fcgi: Add support for 'ProxyErrorOverride on'. PR 50913. [Mark Montague <mark catseye.org>, Jim Jagielski] *) core: Change the APIs of ap_cfg_getline() and ap_cfg_getc() to return an Loading
modules/proxy/mod_proxy_ajp.c +46 −0 Changes for modules/proxy/mod_proxy_ajp.c: 46 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -190,6 +190,8 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, apr_size_t maxsize = AJP_MSG_BUFFER_SZ; int send_body = 0; apr_off_t content_length = 0; int original_status = r->status; const char *original_status_line = r->status_line; if (psf->io_buffer_size_set) maxsize = psf->io_buffer_size; Loading Loading @@ -430,12 +432,27 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, if (status != APR_SUCCESS) { backend_failed = 1; } else if ((r->status == 401) && conf->error_override) { const char *buf; const char *wa = "WWW-Authenticate"; if ((buf = apr_table_get(r->headers_out, wa))) { apr_table_set(r->err_headers_out, wa, buf); } else { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, "ap_proxy_ajp_request: origin server " "sent 401 without WWW-Authenticate header"); } } headers_sent = 1; break; case CMD_AJP13_SEND_BODY_CHUNK: /* AJP13_SEND_BODY_CHUNK: piece of data */ status = ajp_parse_data(r, conn->data, &size, &send_body_chunk_buff); if (status == APR_SUCCESS) { /* If we are overriding the errors, we can't put the content * of the page into the brigade. */ if (!conf->error_override || !ap_is_HTTP_ERROR(r->status)) { /* AJP13_SEND_BODY_CHUNK with zero length * is explicit flush message */ Loading @@ -452,6 +469,17 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, else { apr_status_t rv; /* Handle the case where the error document is itself reverse * proxied and was successful. We must maintain any previous * error status so that an underlying error (eg HTTP_NOT_FOUND) * doesn't become an HTTP_OK. */ if (conf->error_override && !ap_is_HTTP_ERROR(r->status) && ap_is_HTTP_ERROR(original_status)) { r->status = original_status; r->status_line = original_status_line; } e = apr_bucket_transient_create(send_body_chunk_buff, size, r->connection->bucket_alloc); APR_BRIGADE_INSERT_TAIL(output_brigade, e); Loading Loading @@ -480,11 +508,17 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, data_sent = 1; apr_brigade_cleanup(output_brigade); } } else { backend_failed = 1; } break; case CMD_AJP13_END_RESPONSE: /* If we are overriding the errors, we must not send anything to * the client, especially as the brigade already contains headers. * So do nothing here, and it will be cleaned up below. */ if (!conf->error_override || !ap_is_HTTP_ERROR(r->status)) { e = apr_bucket_eos_create(r->connection->bucket_alloc); APR_BRIGADE_INSERT_TAIL(output_brigade, e); if (ap_pass_brigade(r->output_filters, Loading @@ -495,6 +529,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, } /* XXX: what about flush here? See mod_jk */ data_sent = 1; } request_ended = 1; break; default: Loading Loading @@ -569,8 +604,19 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r, "proxy: got response from %pI (%s)", conn->worker->cp->addr, conn->worker->s->hostname); if (conf->error_override && ap_is_HTTP_ERROR(r->status)) { /* clear r->status for override error, otherwise ErrorDocument * thinks that this is a recursive error, and doesn't find the * custom error page */ rv = r->status; r->status = HTTP_OK; } else { rv = OK; } } if (backend_failed) { ap_log_error(APLOG_MARK, APLOG_ERR, status, r->server, Loading