From 9c7cc5063d137faa282f301108007b1955b7906c Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Wed, 28 Nov 2001 05:44:50 +0000 Subject: [PATCH] avoid calling ssl_util_vhostid() (and apr_sprintf underneath) at request time by calling it at startup time and saving the value in the SSLSrvConfigRec. PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92215 13f79535-47bb-0310-9956-ffa450edef68 --- modules/ssl/mod_ssl.c | 7 +++---- modules/ssl/mod_ssl.h | 1 + modules/ssl/ssl_engine_config.c | 1 + modules/ssl/ssl_engine_init.c | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/ssl/mod_ssl.c b/modules/ssl/mod_ssl.c index 619c5dd1ff..37f92c5c25 100644 --- a/modules/ssl/mod_ssl.c +++ b/modules/ssl/mod_ssl.c @@ -221,7 +221,6 @@ static int ssl_hook_pre_connection(conn_rec *c) { SSLSrvConfigRec *sc = mySrvConfig(c->base_server); SSL *ssl; - unsigned char *cpVHostID; char *cpVHostMD5; SSLConnRec *sslconn = apr_pcalloc(c->pool, sizeof(*sslconn)); @@ -241,9 +240,9 @@ static int ssl_hook_pre_connection(conn_rec *c) * Remember the connection information for * later access inside callback functions */ - cpVHostID = (unsigned char *)ssl_util_vhostid(c->pool,c->base_server); + ssl_log(c->base_server, SSL_LOG_INFO, "Connection to child %d established " - "(server %s, client %s)", c->id, cpVHostID, + "(server %s, client %s)", c->id, sc->szVHostID, c->remote_ip != NULL ? c->remote_ip : "unknown"); /* @@ -263,7 +262,7 @@ static int ssl_hook_pre_connection(conn_rec *c) return DECLINED; /* XXX */ } SSL_clear(ssl); - cpVHostMD5 = ap_md5(c->pool, cpVHostID); + cpVHostMD5 = ap_md5(c->pool, sc->szVHostID); if (!SSL_set_session_id_context(ssl, (unsigned char *)cpVHostMD5, MD5_DIGESTSIZE*2)) { ssl_log(c->base_server, SSL_LOG_ERROR|SSL_ADD_SSLERR, diff --git a/modules/ssl/mod_ssl.h b/modules/ssl/mod_ssl.h index 8bd0c71b8a..06c035e177 100644 --- a/modules/ssl/mod_ssl.h +++ b/modules/ssl/mod_ssl.h @@ -497,6 +497,7 @@ typedef struct { * and all contexts) */ typedef struct { + const char *szVHostID; BOOL bEnabled; apr_table_t *ap_server_ctx; const char *szPublicCertFile[SSL_AIDX_MAX]; diff --git a/modules/ssl/ssl_engine_config.c b/modules/ssl/ssl_engine_config.c index beb9078766..d37df7d0bb 100644 --- a/modules/ssl/ssl_engine_config.c +++ b/modules/ssl/ssl_engine_config.c @@ -190,6 +190,7 @@ void *ssl_config_server_merge(apr_pool_t *p, void *basev, void *addv) SSLSrvConfigRec *add = (SSLSrvConfigRec *)addv; SSLSrvConfigRec *new = (SSLSrvConfigRec *)apr_palloc(p, sizeof(SSLSrvConfigRec)); + cfgMergeString(szVHostID); cfgMergeBool(bEnabled); cfgMergeString(szCACertificatePath); cfgMergeString(szCACertificateFile); diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index a13aa7199a..ab98d808b9 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -476,7 +476,7 @@ void ssl_init_ConfigureServer(server_rec *s, apr_pool_t *p, SSLSrvConfigRec *sc) /* * Create the server host:port string because we need it a lot */ - cpVHostID = ssl_util_vhostid(p, s); + sc->szVHostID = cpVHostID = ssl_util_vhostid(p, s); /* * Now check for important parameters and the -- 2.50.1