diff options
Diffstat (limited to 'modules/ssl/ssl_engine_init.c')
-rw-r--r-- | modules/ssl/ssl_engine_init.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index 8b26c353..797fbd12 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -27,8 +27,14 @@ see Recursive.'' -- Unknown */ #include "ssl_private.h" +#include "mod_ssl.h" +#include "mod_ssl_openssl.h" #include "mpm_common.h" +APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ssl, SSL, int, init_server, + (server_rec *s,apr_pool_t *p,int is_proxy,SSL_CTX *ctx), + (s,p,is_proxy,ctx), OK, DECLINED) + /* _________________________________________________________________ ** ** Module Initialization @@ -321,6 +327,21 @@ apr_status_t ssl_init_Module(apr_pool_t *p, apr_pool_t *plog, return rv; } + for (s = base_server; s; s = s->next) { + sc = mySrvConfig(s); + + if (sc->enabled == SSL_ENABLED_TRUE || sc->enabled == SSL_ENABLED_OPTIONAL) { + if ((rv = ssl_run_init_server(s, p, 0, sc->server->ssl_ctx)) != APR_SUCCESS) { + return rv; + } + } + else if (sc->proxy_enabled == SSL_ENABLED_TRUE) { + if ((rv = ssl_run_init_server(s, p, 1, sc->proxy->ssl_ctx)) != APR_SUCCESS) { + return rv; + } + } + } + /* * Announce mod_ssl and SSL library in HTTP Server field * as ``mod_ssl/X.X.X OpenSSL/X.X.X'' @@ -1026,7 +1047,7 @@ static apr_status_t ssl_init_server_certs(server_rec *s, X509 *cert; DH *dhparams; #ifdef HAVE_ECC - EC_GROUP *ecparams; + EC_GROUP *ecparams = NULL; int nid; EC_KEY *eckey = NULL; #endif @@ -1174,6 +1195,7 @@ static apr_status_t ssl_init_server_certs(server_rec *s, ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(02540) "Custom DH parameters (%d bits) for %s loaded from %s", BN_num_bits(dhparams->p), vhost_id, certfile); + DH_free(dhparams); } #ifdef HAVE_ECC @@ -1202,6 +1224,7 @@ static apr_status_t ssl_init_server_certs(server_rec *s, #endif } EC_KEY_free(eckey); + EC_GROUP_free(ecparams); #endif return APR_SUCCESS; @@ -1438,7 +1461,8 @@ static apr_status_t ssl_init_proxy_certs(server_rec *s, int j; for (j = 0; j < i; j++) { ssl_log_xerror(SSLLOG_MARK, APLOG_DEBUG, 0, ptemp, s, - sk_X509_value(chain, j), "%i:", j); + sk_X509_value(chain, j), APLOGNO(03039) + "%i:", j); } } } |