You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rp...@apache.org on 2008/11/01 11:23:11 UTC
svn commit: r709666 - in /httpd/httpd/trunk: CHANGES
modules/proxy/mod_proxy_ajp.c
Author: rpluem
Date: Sat Nov 1 03:23:09 2008
New Revision: 709666
URL: http://svn.apache.org/viewvc?rev=709666&view=rev
Log:
* Use distinct char pointers for sending and receiving buffers to avoid
destroying the pointer to the sending buffer in the ajp message if
data is received from the backend before all data is sent to the
backend.
PR: 45911
Modified:
httpd/httpd/trunk/CHANGES
httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c
Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=709666&r1=709665&r2=709666&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Sat Nov 1 03:23:09 2008
@@ -2,6 +2,9 @@
Changes with Apache 2.3.0
[ When backported to 2.2.x, remove entry from this file ]
+ *) mod_proxy_ajp: Do not fail if response data is sent before all request
+ data is read. PR 45911 [Ruediger Pluem]
+
*) mod_authn_core: Prevent crash when provider alias created to
provider which is not yet registered. [Chris Darroch]
Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c?rev=709666&r1=709665&r2=709666&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_ajp.c Sat Nov 1 03:23:09 2008
@@ -172,6 +172,7 @@
ajp_msg_t *msg;
apr_size_t bufsiz = 0;
char *buff;
+ char *send_body_chunk_buff;
apr_uint16_t size;
const char *tenc;
int havebody = 1;
@@ -427,7 +428,7 @@
break;
case CMD_AJP13_SEND_BODY_CHUNK:
/* AJP13_SEND_BODY_CHUNK: piece of data */
- status = ajp_parse_data(r, conn->data, &size, &buff);
+ status = ajp_parse_data(r, conn->data, &size, &send_body_chunk_buff);
if (status == APR_SUCCESS) {
/* AJP13_SEND_BODY_CHUNK with zero length
* is explicit flush message
@@ -443,7 +444,7 @@
}
}
else {
- e = apr_bucket_transient_create(buff, size,
+ e = apr_bucket_transient_create(send_body_chunk_buff, size,
r->connection->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(output_brigade, e);