mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
* Fix PR37100 (SEGV in mod_proxy_ajp), by sending the data up the filter
chain immediately instead of spooling it completely before passing it to the filter chain. It contains a bandaid to handle intentional flushes from Tomcat side. Further explanation in code and report. ajp.h: Add ajp_msg_reuse prototype mod_proxy_ajp.c: Adjust logic of ap_proxy_ajp_request ajp_msg.c: Add ajp_msg_reuse ajp_header.c: Adjusting logic of ajp_read_header git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@327185 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -615,12 +615,22 @@ apr_status_t ajp_read_header(apr_socket_t *sock,
|
||||
{
|
||||
apr_byte_t result;
|
||||
apr_status_t rc;
|
||||
|
||||
rc = ajp_msg_create(r->pool, msg);
|
||||
if (rc != APR_SUCCESS) {
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
|
||||
"ajp_read_header: ajp_msg_create failed");
|
||||
return rc;
|
||||
|
||||
if (*msg) {
|
||||
rc = ajp_msg_reuse(*msg);
|
||||
if (rc != APR_SUCCESS) {
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
|
||||
"ajp_read_header: ajp_msg_reuse failed");
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
else {
|
||||
rc = ajp_msg_create(r->pool, msg);
|
||||
if (rc != APR_SUCCESS) {
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
|
||||
"ajp_read_header: ajp_msg_create failed");
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
ajp_msg_reset(*msg);
|
||||
rc = ajp_ilink_receive(sock, *msg);
|
||||
|
Reference in New Issue
Block a user