summaryrefslogtreecommitdiff
path: root/server/config.c
diff options
context:
space:
mode:
authorJim Jagielski <jim@apache.org>2020-01-14 17:31:49 +0000
committerJim Jagielski <jim@apache.org>2020-01-14 17:31:49 +0000
commit7b406d6d74ce1ddd38da75071426845386d1d3a0 (patch)
tree3ad5e9f735510716d9e6f42c42710c7ef2f95c37 /server/config.c
parent6daa7047b4f7280a637ace80ab318b6c02a2f2f0 (diff)
downloadhttpd-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.c10
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;