]> granicus.if.org Git - apache/commitdiff
minor ssl_init_CheckServers() enhancements:
authorDoug MacEachern <dougm@apache.org>
Wed, 13 Mar 2002 01:15:14 +0000 (01:15 +0000)
committerDoug MacEachern <dougm@apache.org>
Wed, 13 Mar 2002 01:15:14 +0000 (01:15 +0000)
- 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

index 61908aacbda1c83beeeee597540b9e1e3179b365..6db4aada5a54945217e707c54ab017fda16cc01a 100644 (file)
@@ -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 "