diff options
author | Jeremy Harris <jgh146exb@wizmail.org> | 2022-08-20 16:43:03 +0100 |
---|---|---|
committer | Jeremy Harris <jgh146exb@wizmail.org> | 2022-08-20 18:22:39 +0100 |
commit | 9641b6648d2d2d87e14856f9c3383deb86772757 (patch) | |
tree | bbcc9665596db809d4ced5dd463e72de73e08b3e /src | |
parent | ba47f2909371787b76d213ea012c6b950f9f8080 (diff) |
OpenSSL: fix reload of changed OCSP proof
Diffstat (limited to 'src')
-rw-r--r-- | src/src/tls-openssl.c | 14 | ||||
-rw-r--r-- | src/src/tls.c | 2 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/src/tls-openssl.c b/src/src/tls-openssl.c index c46bc75a5..c63e56c0e 100644 --- a/src/src/tls-openssl.c +++ b/src/src/tls-openssl.c @@ -1477,12 +1477,12 @@ return; static void -ocsp_free_response_list(exim_openssl_state_st * cbinfo) +ocsp_free_response_list(exim_openssl_state_st * state) { -for (ocsp_resplist * olist = cbinfo->u_ocsp.server.olist; olist; +for (ocsp_resplist * olist = state->u_ocsp.server.olist; olist; olist = olist->next) OCSP_RESPONSE_free(olist->resp); -cbinfo->u_ocsp.server.olist = NULL; +state->u_ocsp.server.olist = NULL; } #endif /*!DISABLE_OCSP*/ @@ -1574,6 +1574,11 @@ else if (olist && !*olist) olist = NULL; + /* If doing a re-expand after SNI, avoid reloading the OCSP + responses when the list of filenames has not changed. + The creds-invali on content change wipes file_expanded, so that + always reloads here. */ + if ( state->u_ocsp.server.file_expanded && olist && (Ustrcmp(olist, state->u_ocsp.server.file_expanded) == 0)) { @@ -1918,6 +1923,7 @@ tls_server_creds_invalidate(void) { SSL_CTX_free(state_server.lib_state.lib_ctx); state_server.lib_state = null_tls_preload; +state_server.u_ocsp.server.file_expanded = NULL; } @@ -2763,7 +2769,7 @@ if (state->lib_state.conn_certs) else { #ifndef DISABLE_OCSP - if (!host) + if (!host) /* server */ { state->u_ocsp.server.file = ocsp_file; state->u_ocsp.server.file_expanded = NULL; diff --git a/src/src/tls.c b/src/src/tls.c index 32b29ee3e..d7cefce67 100644 --- a/src/src/tls.c +++ b/src/src/tls.c @@ -361,6 +361,8 @@ tls_watch_invalidate(); #endif tls_server_creds_invalidate(); + +/* _expire is for a time-limited selfsign server cert */ tls_creds_expire = (lifetime = tls_server_creds_init()) ? time(NULL) + lifetime : 0; |