From: Graham Leggett Date: Sat, 3 Dec 2011 00:57:19 +0000 (+0000) Subject: mod_proxy: Remove ap_proxy_buckets_lifetime_transform() from the public API. X-Git-Tag: 2.5.0-alpha~7743 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e45341af5d4bf18b5b1df2e238464627c779e2d3;p=apache mod_proxy: Remove ap_proxy_buckets_lifetime_transform() from the public API. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1209811 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index c222bc1138..e406b3aaf8 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -834,28 +834,6 @@ PROXY_DECLARE(int) ap_proxy_connection_create(const char *proxy_function, PROXY_DECLARE(void) ap_proxy_backend_broke(request_rec *r, apr_bucket_brigade *brigade); -/** - * Transform buckets from one bucket allocator to another one by creating a - * transient bucket for each data bucket and let it use the data read from - * the old bucket. Metabuckets are transformed by just recreating them. - * Attention: Currently only the following bucket types are handled: - * - * All data buckets - * FLUSH - * EOS - * - * If an other bucket type is found its type is logged as a debug message - * and APR_EGENERAL is returned. - * @param r current request record of client request. Only used for logging - * purposes - * @param from the brigade that contains the buckets to transform - * @param to the brigade that will receive the transformed buckets - * @return APR_SUCCESS if all buckets could be transformed APR_EGENERAL - * otherwise - */ -PROXY_DECLARE(apr_status_t) ap_proxy_buckets_lifetime_transform(request_rec *r, - apr_bucket_brigade *from, - apr_bucket_brigade *to); /** * Return a hash based on the passed string * @param str string to produce hash from diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c index 9a49899c64..b828a604d8 100644 --- a/modules/proxy/mod_proxy_http.c +++ b/modules/proxy/mod_proxy_http.c @@ -688,6 +688,56 @@ static int spool_reqbody_cl(apr_pool_t *p, return(pass_brigade(bucket_alloc, r, p_conn, origin, header_brigade, 1)); } +/* + * Transform buckets from one bucket allocator to another one by creating a + * transient bucket for each data bucket and let it use the data read from + * the old bucket. Metabuckets are transformed by just recreating them. + * Attention: Currently only the following bucket types are handled: + * + * All data buckets + * FLUSH + * EOS + * + * If an other bucket type is found its type is logged as a debug message + * and APR_EGENERAL is returned. + */ +static apr_status_t proxy_buckets_lifetime_transform(request_rec *r, + apr_bucket_brigade *from, apr_bucket_brigade *to) +{ + apr_bucket *e; + apr_bucket *new; + const char *data; + apr_size_t bytes; + apr_status_t rv = APR_SUCCESS; + + apr_brigade_cleanup(to); + for (e = APR_BRIGADE_FIRST(from); + e != APR_BRIGADE_SENTINEL(from); + e = APR_BUCKET_NEXT(e)) { + if (!APR_BUCKET_IS_METADATA(e)) { + apr_bucket_read(e, &data, &bytes, APR_BLOCK_READ); + new = apr_bucket_transient_create(data, bytes, r->connection->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(to, new); + } + else if (APR_BUCKET_IS_FLUSH(e)) { + new = apr_bucket_flush_create(r->connection->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(to, new); + } + else if (APR_BUCKET_IS_EOS(e)) { + new = apr_bucket_eos_create(r->connection->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(to, new); + } + else { + ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00964) + "Unhandled bucket type of type %s in" + " proxy_buckets_lifetime_transform", e->type->name); + apr_bucket_delete(e); + rv = APR_EGENERAL; + } + } + return rv; +} + static int ap_proxy_http_request(apr_pool_t *p, request_rec *r, proxy_conn_rec *p_conn, proxy_worker *worker, @@ -1903,7 +1953,7 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, } /* Switch the allocator lifetime of the buckets */ - ap_proxy_buckets_lifetime_transform(r, bb, pass_bb); + proxy_buckets_lifetime_transform(r, bb, pass_bb); /* found the last brigade? */ if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(pass_bb))) { diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index cba4ceb0f0..c4b29d47dd 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -2723,57 +2723,6 @@ PROXY_DECLARE(void) ap_proxy_backend_broke(request_rec *r, APR_BRIGADE_INSERT_TAIL(brigade, e); } -/* - * Transform buckets from one bucket allocator to another one by creating a - * transient bucket for each data bucket and let it use the data read from - * the old bucket. Metabuckets are transformed by just recreating them. - * Attention: Currently only the following bucket types are handled: - * - * All data buckets - * FLUSH - * EOS - * - * If an other bucket type is found its type is logged as a debug message - * and APR_EGENERAL is returned. - */ -PROXY_DECLARE(apr_status_t) -ap_proxy_buckets_lifetime_transform(request_rec *r, apr_bucket_brigade *from, - apr_bucket_brigade *to) -{ - apr_bucket *e; - apr_bucket *new; - const char *data; - apr_size_t bytes; - apr_status_t rv = APR_SUCCESS; - - apr_brigade_cleanup(to); - for (e = APR_BRIGADE_FIRST(from); - e != APR_BRIGADE_SENTINEL(from); - e = APR_BUCKET_NEXT(e)) { - if (!APR_BUCKET_IS_METADATA(e)) { - apr_bucket_read(e, &data, &bytes, APR_BLOCK_READ); - new = apr_bucket_transient_create(data, bytes, r->connection->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(to, new); - } - else if (APR_BUCKET_IS_FLUSH(e)) { - new = apr_bucket_flush_create(r->connection->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(to, new); - } - else if (APR_BUCKET_IS_EOS(e)) { - new = apr_bucket_eos_create(r->connection->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(to, new); - } - else { - ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00964) - "Unhandled bucket type of type %s in" - " ap_proxy_buckets_lifetime_transform", e->type->name); - apr_bucket_delete(e); - rv = APR_EGENERAL; - } - } - return rv; -} - /* * Provide a string hashing function for the proxy. * We offer 2 methods: one is the APR model but we