From a0545d2647e0afad247f74e570b729c8e81ad3c9 Mon Sep 17 00:00:00 2001 From: Ryan Bloom Date: Sat, 10 Nov 2001 18:38:02 +0000 Subject: [PATCH] Improve http2env's performance by cutting the work it has to do. Submitted by: Brian Pane git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91835 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ server/util_script.c | 32 ++++++++++++++++++++------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/CHANGES b/CHANGES index e54fc2d0e0..0657381861 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,8 @@ Changes with Apache 2.0.29-dev + *) Improve http2env's performance by cutting the work it has to + do. [Brian Pane ] + *) use new 'apr_hash_merge' function in mod_mime (performance fix) [Brian Pane ] diff --git a/server/util_script.c b/server/util_script.c index 735c76f348..0f3733bea4 100644 --- a/server/util_script.c +++ b/server/util_script.c @@ -95,20 +95,28 @@ #define MALFORMED_MESSAGE "malformed header from script. Bad header=" #define MALFORMED_HEADER_LENGTH_TO_SHOW 30 -static char *http2env(apr_pool_t *a, char *w) +static char *http2env(apr_pool_t *a, const char *w) { - char *res = apr_pstrcat(a, "HTTP_", w, NULL); + char *res = (char *)apr_palloc(a, sizeof("HTTP_") + strlen(w)); char *cp = res; - - while (*++cp) { - if (!apr_isalnum(*cp) && *cp != '_') { - *cp = '_'; - } - else { - *cp = apr_toupper(*cp); - } - } - + char c; + + *cp++ = 'H'; + *cp++ = 'T'; + *cp++ = 'T'; + *cp++ = 'P'; + *cp++ = '_'; + + while ((c = *w++) != 0) { + if (!apr_isalnum(c)) { + *cp++ = '_'; + } + else { + *cp++ = apr_toupper(c); + } + } + *cp = 0; + return res; } -- 2.50.1