Commit c1184912 authored by Mladen Turk's avatar Mladen Turk
Browse files

Backport explicit flushing feature.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@479655 13f79535-47bb-0310-9956-ffa450edef68
parent 6f2afefa
Loading
Loading
Loading
Loading
+7 −0
Changes for CHANGES: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.4
   * mod_proxy: Add explicit flushing feature.
     When Servlet container sends AJP body message with size 0,
     this means that Servlet container has asked for an explicit flush.
     Create flush bucket in that case. This feature has been added
     to the recent Tomcat versions without breaking the AJP protocol.
     [Mladen Turk]
  *) mod_proxy_balancer: Set the new environment variable BALANCER_ROUTE_CHANGED
     if a worker with a route different from the one supplied by the client
     had been chosen or if the client supplied no routing information for
+0 −8
Changes for STATUS: 0 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -80,14 +80,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:

PATCHES PROPOSED TO BACKPORT FROM TRUNK:

   * mod_proxy: Add explicit flushing feature.
     When Servlet container sends AJP body message with size 0,
     this means that Servlet container has asked for an explicit flush.
     Create flush bucket in that case. This feature has been added
     to the recent Tomcat versions without breaking the AJP protocol.
     Trunk:http://svn.apache.org/viewvc?view=rev&revision=468941
     +1: mturk, rpluem, jfclere

    * mpm_winnt: Fix return values from wait_for_many_objects.
      Trunk version of patch:
        http://svn.apache.org/viewvc?view=rev&revision=428029
+9 −0
Changes for modules/proxy/mod_proxy_ajp.c: 9 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -315,6 +315,14 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                /* AJP13_SEND_BODY_CHUNK: piece of data */
                status = ajp_parse_data(r, conn->data, &size, &buff);
                if (status == APR_SUCCESS) {
                    if (size == 0) {
                        /* AJP13_SEND_BODY_CHUNK with zero length
                         * is explicit flush message
                         */
                        e = apr_bucket_flush_create(r->connection->bucket_alloc);
                        APR_BRIGADE_INSERT_TAIL(output_brigade, e);
                    }
                    else {
                        e = apr_bucket_transient_create(buff, size,
                                                    r->connection->bucket_alloc);
                        APR_BRIGADE_INSERT_TAIL(output_brigade, e);
@@ -330,6 +338,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                        apr_brigade_length(output_brigade, 0, &bb_len);
                        if (bb_len != -1)
                            conn->worker->s->read += bb_len;
                    }
                    if (ap_pass_brigade(r->output_filters,
                                        output_brigade) != APR_SUCCESS) {
                        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,