Commit 29a5c2e4 authored by Ruediger Pluem's avatar Ruediger Pluem
Browse files

Merge r709666 from trunk:

* 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

Submitted by: rpluem
Reviewed by: rpluem, jim, jfclere


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@714273 13f79535-47bb-0310-9956-ffa450edef68
parent efe302f5
Loading
Loading
Loading
Loading
+3 −0
Changes for CHANGES: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                         -*- coding: utf-8 -*-
Changes with Apache 2.2.11

  *) mod_proxy_ajp: Do not fail if response data is sent before all request
     data is read. PR 45911 [Ruediger Pluem]

  *) mod_proxy_balancer: Add in forced recovery for balancer members if
     all are in error state. [Mladen Turk]

+0 −7
Changes for STATUS: 0 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -85,13 +85,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

    * mod_proxy_ajp: Do not fail if response data is sent before all request
      data is read.  PR 45911
      Trunk version of patch:
         http://svn.apache.org/viewvc?rev=709666&view=rev
      Backport version for 2.2.x of patch:
         Trunk version of patch works
      +1: rpluem, jim, jfclere

PATCHES PROPOSED TO BACKPORT FROM TRUNK:
  [ New proposals should be added at the end of the list ]
+3 −2
Changes for modules/proxy/mod_proxy_ajp.c: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -172,6 +172,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
    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 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                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 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                        }
                    }
                    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);