diff options
author | Jim Jagielski <jim@apache.org> | 2020-01-14 17:31:49 +0000 |
---|---|---|
committer | Jim Jagielski <jim@apache.org> | 2020-01-14 17:31:49 +0000 |
commit | 7b406d6d74ce1ddd38da75071426845386d1d3a0 (patch) | |
tree | 3ad5e9f735510716d9e6f42c42710c7ef2f95c37 /server/config.c | |
parent | 6daa7047b4f7280a637ace80ab318b6c02a2f2f0 (diff) | |
download | httpd-7b406d6d74ce1ddd38da75071426845386d1d3a0.tar.gz |
config: Speed up graceful restarts by using pre-hashed command table. PR 64066.
[Giovanni Bechis <giovanni paclan.it>, Jim Jagielski]
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1872786 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'server/config.c')
-rw-r--r-- | server/config.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/server/config.c b/server/config.c index f988368718..8de2cec945 100644 --- a/server/config.c +++ b/server/config.c @@ -1120,8 +1120,9 @@ static const char *ap_build_config_sub(apr_pool_t *p, apr_pool_t *temp_pool, const char *args; char *cmd_name; ap_directive_t *newdir; - module *mod = ap_top_module; const command_rec *cmd; + ap_mod_list *ml; + char *lname; if (*l == '#' || *l == '\0') return NULL; @@ -1159,9 +1160,12 @@ static const char *ap_build_config_sub(apr_pool_t *p, apr_pool_t *temp_pool, newdir->line_num = parms->config_file->line_number; newdir->args = apr_pstrdup(p, args); - if ((cmd = ap_find_command_in_modules(cmd_name, &mod)) != NULL) { + lname = apr_pstrdup(temp_pool, cmd_name); + ap_str_tolower(lname); + ml = apr_hash_get(ap_config_hash, lname, APR_HASH_KEY_STRING); + + if (ml && (cmd = ml->cmd) != NULL) { newdir->directive = cmd->name; - if (cmd->req_override & EXEC_ON_READ) { ap_directive_t *sub_tree = NULL; |