diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/src/tls-gnu.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/src/tls-gnu.c b/src/src/tls-gnu.c index fa489902a..eff9e8859 100644 --- a/src/src/tls-gnu.c +++ b/src/src/tls-gnu.c @@ -424,11 +424,14 @@ record_io_error(exim_gnutls_state_st *state, int rc, uschar *when, uschar *text) const uschar * msg; uschar * errstr; -if (rc == GNUTLS_E_FATAL_ALERT_RECEIVED) - msg = string_sprintf("A TLS fatal alert has been received: %s", - US gnutls_alert_get_name(gnutls_alert_get(state->session))); -else - msg = US gnutls_strerror(rc); +msg = rc == GNUTLS_E_FATAL_ALERT_RECEIVED + ? string_sprintf("A TLS fatal alert has been received: %s", + US gnutls_alert_get_name(gnutls_alert_get(state->session))) + : rc == GNUTLS_E_PREMATURE_TERMINATION && errno + ? errno == ECONNRESET /* Outlook does this to us right after sending us QUIT */ + ? string_sprintf("syscall: %s", strerror(errno)) + : string_sprintf("%s: syscall: %s", US gnutls_strerror(rc), strerror(errno)) + : US gnutls_strerror(rc); (void) tls_error(when, msg, state->host, &errstr); |