1
0
mirror of https://github.com/apache/httpd.git synced 2025-07-30 20:03:10 +03:00

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
This commit is contained in:
Doug MacEachern
2002-03-13 01:15:14 +00:00
parent e7f00d8c09
commit ec39586ace

View File

@ -332,7 +332,7 @@ int ssl_init_Module(apr_pool_t *p, apr_pool_t *plog,
/* /*
* Configuration consistency checks * 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 * 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) void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p)
{ {
server_rec *s, **ps; server_rec *s, *ps;
SSLSrvConfigRec *sc; SSLSrvConfigRec *sc;
ssl_ds_table *table; apr_hash_t *table;
apr_pool_t *subpool; const char *key;
char *key; apr_ssize_t klen;
BOOL conflict = FALSE; 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 * just the certificate/keys of one virtual host (which one cannot be said
* easily - but that doesn't matter here). * easily - but that doesn't matter here).
*/ */
apr_pool_create(&subpool, p); table = apr_hash_make(p);
table = ssl_ds_table_make(subpool, sizeof(server_rec *));
for (s = base_server; s; s = s->next) { for (s = base_server; s; s = s->next) {
sc = mySrvConfig(s); sc = mySrvConfig(s);
@ -897,31 +897,27 @@ void ssl_init_CheckServers(server_rec *base_server, apr_pool_t *p)
continue; continue;
} }
key = apr_psprintf(subpool, "%pA:%u", key = apr_psprintf(p, "%pA:%u",
&s->addrs->host_addr, s->addrs->host_port); &s->addrs->host_addr, s->addrs->host_port);
klen = strlen(key);
if ((ps = ssl_ds_table_get(table, key))) {
if ((ps = (server_rec *)apr_hash_get(table, key, klen))) {
ssl_log(base_server, SSL_LOG_WARN, ssl_log(base_server, SSL_LOG_WARN,
"Init: SSL server IP/port conflict: " "Init: SSL server IP/port conflict: "
"%s (%s:%d) vs. %s (%s:%d)", "%s (%s:%d) vs. %s (%s:%d)",
ssl_util_vhostid(p, s), ssl_util_vhostid(p, s),
(s->defn_name ? s->defn_name : "unknown"), (s->defn_name ? s->defn_name : "unknown"),
s->defn_line_number, s->defn_line_number,
ssl_util_vhostid(p, *ps), ssl_util_vhostid(p, ps),
((*ps)->defn_name ? (*ps)->defn_name : "unknown"), (ps->defn_name ? ps->defn_name : "unknown"),
(*ps)->defn_line_number); ps->defn_line_number);
conflict = TRUE; conflict = TRUE;
continue; continue;
} }
ps = ssl_ds_table_push(table, key); apr_hash_set(table, key, klen, s);
*ps = s;
} }
ssl_ds_table_kill(table);
/* XXX - It was giving some problem earlier - check it out - TBD */
apr_pool_destroy(subpool);
if (conflict) { if (conflict) {
ssl_log(base_server, SSL_LOG_WARN, ssl_log(base_server, SSL_LOG_WARN,
"Init: You should not use name-based " "Init: You should not use name-based "