Loading CHANGES +2 −2 Changes for CHANGES: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -9,8 +9,8 @@ Changes with Apache 2.0.37 Elimiates possible gpfault or garbage title without the -t option. [William Rowe] *) Rewrite mod_cgi and mod_cgid's input handling to use brigades and input filters. [Justin Erenkrantz] *) Rewrite mod_cgi, mod_cgid, and mod_proxy input handling to use brigades and input filters. [Justin Erenkrantz] *) Allow ap_http_filter (HTTP_IN) to return EOS when there is no request body. [Justin Erenkrantz] Loading modules/proxy/mod_proxy.c +0 −3 Changes for modules/proxy/mod_proxy.c: 0 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -394,9 +394,6 @@ static int proxy_handler(request_rec *r) apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd : 0)); if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR))) return rc; url = r->filename + 6; p = strchr(url, ':'); if (p == NULL) Loading modules/proxy/proxy_http.c +27 −8 Changes for modules/proxy/proxy_http.c: 27 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -419,12 +419,11 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r, char *url, apr_bucket_brigade *bb, char *server_portstr) { conn_rec *c = r->connection; char buffer[HUGE_STRING_LEN]; char *buf; apr_bucket *e; const apr_array_header_t *headers_in_array; const apr_table_entry_t *headers_in; int counter; int counter, seen_eos; apr_status_t status; /* Loading Loading @@ -620,12 +619,32 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r, } /* send the request data, if any. */ if (ap_should_client_block(r)) { while ((counter = ap_get_client_block(r, buffer, sizeof(buffer))) > 0) { e = apr_bucket_pool_create(buffer, counter, p, c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, e); seen_eos = 0; do { status = ap_get_brigade(r->input_filters, bb, AP_MODE_READBYTES, APR_BLOCK_READ, HUGE_STRING_LEN); if (status != APR_SUCCESS) { return status; } /* If this brigade contain EOS, either stop or remove it. */ if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) { /* As a shortcut, if this brigade is simply an EOS bucket, * don't send anything down the filter chain. */ if (APR_BUCKET_IS_EOS(APR_BRIGADE_FIRST(bb))) { break; } /* We can't pass this EOS to the output_filters. */ APR_BUCKET_REMOVE(APR_BRIGADE_LAST(bb)); seen_eos = 1; } e = apr_bucket_flush_create(c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, e); status = ap_pass_brigade(origin->output_filters, bb); if (status != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_ERR, status, r->server, Loading @@ -634,8 +653,8 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r, return status; } apr_brigade_cleanup(bb); } } } while (!seen_eos); return APR_SUCCESS; } Loading Loading
CHANGES +2 −2 Changes for CHANGES: 2 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -9,8 +9,8 @@ Changes with Apache 2.0.37 Elimiates possible gpfault or garbage title without the -t option. [William Rowe] *) Rewrite mod_cgi and mod_cgid's input handling to use brigades and input filters. [Justin Erenkrantz] *) Rewrite mod_cgi, mod_cgid, and mod_proxy input handling to use brigades and input filters. [Justin Erenkrantz] *) Allow ap_http_filter (HTTP_IN) to return EOS when there is no request body. [Justin Erenkrantz] Loading
modules/proxy/mod_proxy.c +0 −3 Changes for modules/proxy/mod_proxy.c: 0 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -394,9 +394,6 @@ static int proxy_handler(request_rec *r) apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd : 0)); if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR))) return rc; url = r->filename + 6; p = strchr(url, ':'); if (p == NULL) Loading
modules/proxy/proxy_http.c +27 −8 Changes for modules/proxy/proxy_http.c: 27 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -419,12 +419,11 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r, char *url, apr_bucket_brigade *bb, char *server_portstr) { conn_rec *c = r->connection; char buffer[HUGE_STRING_LEN]; char *buf; apr_bucket *e; const apr_array_header_t *headers_in_array; const apr_table_entry_t *headers_in; int counter; int counter, seen_eos; apr_status_t status; /* Loading Loading @@ -620,12 +619,32 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r, } /* send the request data, if any. */ if (ap_should_client_block(r)) { while ((counter = ap_get_client_block(r, buffer, sizeof(buffer))) > 0) { e = apr_bucket_pool_create(buffer, counter, p, c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, e); seen_eos = 0; do { status = ap_get_brigade(r->input_filters, bb, AP_MODE_READBYTES, APR_BLOCK_READ, HUGE_STRING_LEN); if (status != APR_SUCCESS) { return status; } /* If this brigade contain EOS, either stop or remove it. */ if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) { /* As a shortcut, if this brigade is simply an EOS bucket, * don't send anything down the filter chain. */ if (APR_BUCKET_IS_EOS(APR_BRIGADE_FIRST(bb))) { break; } /* We can't pass this EOS to the output_filters. */ APR_BUCKET_REMOVE(APR_BRIGADE_LAST(bb)); seen_eos = 1; } e = apr_bucket_flush_create(c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, e); status = ap_pass_brigade(origin->output_filters, bb); if (status != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_ERR, status, r->server, Loading @@ -634,8 +653,8 @@ apr_status_t ap_proxy_http_request(apr_pool_t *p, request_rec *r, return status; } apr_brigade_cleanup(bb); } } } while (!seen_eos); return APR_SUCCESS; } Loading