]> granicus.if.org Git - apache/commitdiff
optimization: no need to search linear for headers.
authorAndré Malo <nd@apache.org>
Tue, 15 Jul 2003 23:30:40 +0000 (23:30 +0000)
committerAndré Malo <nd@apache.org>
Tue, 15 Jul 2003 23:30:40 +0000 (23:30 +0000)
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

modules/mappers/mod_rewrite.c
modules/mappers/mod_rewrite.h

index 3202902737037265e14bda30403af113c5c1aa1e..d02e9e0c9cbc1979aeec4702b26b8d35a606bf62 100644 (file)
@@ -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;
+}
 
 
 /*
index 2a46b6199b712582c6fb60b8a90ce7fc8e8b1f91..8668fde26216b115987a9774a5941a128cffd127 100644 (file)
@@ -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);