Commit 021eba2b authored by Mladen Turk's avatar Mladen Turk
Browse files

Make sure the AJP message is between 8 and 64K.

Use the provided message size when using get_brigade.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@467257 13f79535-47bb-0310-9956-ffa450edef68
parent 269cf964
Loading
Loading
Loading
Loading
+4 −2
Changes for modules/proxy/ajp.h: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -130,8 +130,10 @@ struct ajp_msg
#define AJP13_WS_HEADER             0x1234
#define AJP_HEADER_LEN              4
#define AJP_HEADER_SZ_LEN           2
#define AJP_MSG_BUFFER_SZ           (8*1024)
#define AJP13_MAX_SEND_BODY_SZ      (AJP_MSG_BUFFER_SZ - 6)
#define AJP_HEADER_SZ               6
#define AJP_MSG_BUFFER_SZ           8192
#define AJP_MAX_BUFFER_SZ           16384
#define AJP13_MAX_SEND_BODY_SZ      (AJP_MAX_BUFFER_SZ - AJP_HEADER_SZ)

/** Send a request from web server to container*/
#define CMD_AJP13_FORWARD_REQUEST   (unsigned char)2
+8 −7
Changes for modules/proxy/mod_proxy_ajp.c: 8 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -135,14 +135,15 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
    apr_pollfd_t *conn_poll;
    proxy_server_conf *psf =
    ap_get_module_config(r->server->module_config, &proxy_module);
    apr_size_t maxsize = AP_IOBUFSIZE;
    apr_size_t maxsize = AJP_MSG_BUFFER_SZ;

    if (psf->io_buffer_size_set)
       maxsize = psf->io_buffer_size;
    if (maxsize > 65536)
       maxsize = 65536;
    if (maxsize%1024)
        maxsize = ((maxsize/1024) + 1 ) * 1024;
    if (maxsize > AJP_MAX_BUFFER_SZ)
       maxsize = AJP_MAX_BUFFER_SZ;
    else if (maxsize < AJP_MSG_BUFFER_SZ)
       maxsize = AJP_MSG_BUFFER_SZ;
    maxsize = APR_ALIGN(maxsize, 1024);

    /*
     * Send the AJP request to the remote server
@@ -183,7 +184,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
    } else {
        status = ap_get_brigade(r->input_filters, input_brigade,
                                AP_MODE_READBYTES, APR_BLOCK_READ,
                                AJP13_MAX_SEND_BODY_SZ);
                                maxsize - AJP_HEADER_SZ);

        if (status != APR_SUCCESS) {
            /* We had a failure: Close connection to backend */
@@ -277,7 +278,7 @@ static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
                        status = ap_get_brigade(r->input_filters, input_brigade,
                                                AP_MODE_READBYTES,
                                                APR_BLOCK_READ,
                                                AJP13_MAX_SEND_BODY_SZ);
                                                maxsize - AJP_HEADER_SZ);
                        if (status != APR_SUCCESS) {
                            ap_log_error(APLOG_MARK, APLOG_DEBUG, status,
                                         r->server,