From: André Malo Date: Tue, 15 Jul 2003 23:30:40 +0000 (+0000) Subject: optimization: no need to search linear for headers. X-Git-Tag: pre_ajp_proxy~1412 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1af42640c53ecf49b551571718bd8a472619e12b;p=apache optimization: no need to search linear for headers. apr_table_get should be more efficient nearly always. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100644 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 3202902737..d02e9e0c9c 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -3961,27 +3961,16 @@ static char *lookup_variable(request_rec *r, char *var) } } -static char *lookup_header(request_rec *r, const char *name) +static const char *lookup_header(request_rec *r, const char *name) { - const apr_array_header_t *hdrs_arr; - const apr_table_entry_t *hdrs; - int i; + const char *val = apr_table_get(r->headers_in, name); - hdrs_arr = apr_table_elts(r->headers_in); - hdrs = (const apr_table_entry_t *)hdrs_arr->elts; - for (i = 0; i < hdrs_arr->nelts; ++i) { - if (hdrs[i].key == NULL) { - continue; - } - if (strcasecmp(hdrs[i].key, name) == 0) { - apr_table_merge(r->notes, VARY_KEY_THIS, name); - return hdrs[i].val; - } + if (val) { + apr_table_merge(r->notes, VARY_KEY_THIS, name); } - return NULL; -} - + return val; +} /* diff --git a/modules/mappers/mod_rewrite.h b/modules/mappers/mod_rewrite.h index 2a46b6199b..8668fde262 100644 --- a/modules/mappers/mod_rewrite.h +++ b/modules/mappers/mod_rewrite.h @@ -458,7 +458,7 @@ static apr_status_t rewritemap_program_child(apr_pool_t *p, /* env variable support */ static char *lookup_variable(request_rec *r, char *var); -static char *lookup_header(request_rec *r, const char *name); +static const char *lookup_header(request_rec *r, const char *name); /* caching functions */ static cache *init_cache(apr_pool_t *p);