X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Ftls-gnu.c;h=10bfaca32ecf888f9c1e65ecf1ff13fe66c872b7;hb=91bde4a0253d38118dc227e184b793d476a013ce;hp=9afaa8feae6f250506e5308b58749324d5638a72;hpb=ad7fc6eb6895ff40cc9998d157d1401bbf43c35e;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/tls-gnu.c b/src/src/tls-gnu.c index 9afaa8fea..10bfaca32 100644 --- a/src/src/tls-gnu.c +++ b/src/src/tls-gnu.c @@ -1836,6 +1836,7 @@ if (rc != GNUTLS_E_SUCCESS) tls_error(US"gnutls_handshake", gnutls_strerror(rc), NULL); (void) gnutls_alert_send_appropriate(state->session, rc); gnutls_deinit(state->session); + gnutls_certificate_free_credentials(state->x509_cred); millisleep(500); shutdown(state->fd_out, SHUT_WR); for (rc = 1024; fgetc(smtp_in) != EOF && rc > 0; ) rc--; /* drain skt */ @@ -2125,11 +2126,13 @@ if (!state->tlsp || state->tlsp->active < 0) return; /* TLS was not active */ if (shutdown) { - DEBUG(D_tls) debug_printf("tls_close() from '%s': shutting down TLS\n"); + DEBUG(D_tls) debug_printf("tls_close(): shutting down TLS\n"); gnutls_bye(state->session, GNUTLS_SHUT_WR); } gnutls_deinit(state->session); +gnutls_certificate_free_credentials(state->x509_cred); + state->tlsp->active = -1; memcpy(state, &exim_gnutls_state_init, sizeof(exim_gnutls_state_init)); @@ -2199,6 +2202,8 @@ if (state->xfer_buffer_lwm >= state->xfer_buffer_hwm) receive_smtp_buffered = smtp_buffered; gnutls_deinit(state->session); + gnutls_certificate_free_credentials(state->x509_cred); + state->session = NULL; state->tlsp->active = -1; state->tlsp->bits = 0;