From ec39586ace8bb7eb61ee81756a86d29f9aed8adc Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Wed, 13 Mar 2002 01:15:14 +0000 Subject: [PATCH] minor ssl_init_CheckServers() enhancements: - pass the ptemp (temporary pool) so we don't need to create a subpool and destroy it ourselves. - change ssl_ds_table usage to apr_hash_t git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93887 13f79535-47bb-0310-9956-ffa450edef68 --- modules/ssl/ssl_engine_init.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index 61908aacbd..6db4aada5a 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -332,7 +332,7 @@ int ssl_init_Module(apr_pool_t *p, apr_pool_t *plog, /* * Configuration consistency checks */ - ssl_init_CheckServers(base_server, p); + ssl_init_CheckServers(base_server, ptemp); /* * Announce mod_ssl and SSL library in HTTP Server field @@ -850,11 +850,12 @@ void ssl_init_ConfigureServer(server_rec *s, apr_pool_t *p, void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p) { - server_rec *s, **ps; + server_rec *s, *ps; SSLSrvConfigRec *sc; - ssl_ds_table *table; - apr_pool_t *subpool; - char *key; + apr_hash_t *table; + const char *key; + apr_ssize_t klen; + BOOL conflict = FALSE; /* @@ -887,8 +888,7 @@ void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p) * just the certificate/keys of one virtual host (which one cannot be said * easily - but that doesn't matter here). */ - apr_pool_create(&subpool, p); - table = ssl_ds_table_make(subpool, sizeof(server_rec *)); + table = apr_hash_make(p); for (s = base_server; s; s = s->next) { sc = mySrvConfig(s); @@ -897,31 +897,27 @@ void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p) continue; } - key = apr_psprintf(subpool, "%pA:%u", + key = apr_psprintf(p, "%pA:%u", &s->addrs->host_addr, s->addrs->host_port); - - if ((ps = ssl_ds_table_get(table, key))) { + klen = strlen(key); + + if ((ps = (server_rec *)apr_hash_get(table, key, klen))) { ssl_log(base_server, SSL_LOG_WARN, "Init: SSL server IP/port conflict: " "%s (%s:%d) vs. %s (%s:%d)", ssl_util_vhostid(p, s), (s->defn_name ? s->defn_name : "unknown"), s->defn_line_number, - ssl_util_vhostid(p, *ps), - ((*ps)->defn_name ? (*ps)->defn_name : "unknown"), - (*ps)->defn_line_number); + ssl_util_vhostid(p, ps), + (ps->defn_name ? ps->defn_name : "unknown"), + ps->defn_line_number); conflict = TRUE; continue; } - ps = ssl_ds_table_push(table, key); - *ps = s; + apr_hash_set(table, key, klen, s); } - ssl_ds_table_kill(table); - /* XXX - It was giving some problem earlier - check it out - TBD */ - apr_pool_destroy(subpool); - if (conflict) { ssl_log(base_server, SSL_LOG_WARN, "Init: You should not use name-based "