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:
@ -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);
|
||||
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,
|
||||
"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 "
|
||||
|
Reference in New Issue
Block a user