Log a diagnostic when an SSL write fails, to help admins debug SSL interop issues.
authorPhil Pennock <pdp@exim.org>
Sat, 5 Jun 2010 09:32:31 +0000 (09:32 +0000)
committerPhil Pennock <pdp@exim.org>
Sat, 5 Jun 2010 09:32:31 +0000 (09:32 +0000)
Fixes: #995

src/src/tls-openssl.c

index a7dad0805104b3a824ba16c8c25d398df4378fd5..dc341d326926bda40ceec122e85681e097029bc4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/tls-openssl.c,v 1.23 2010/06/05 09:10:10 pdp Exp $ */
+/* $Cambridge: exim/src/src/tls-openssl.c,v 1.24 2010/06/05 09:32:31 pdp Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -900,6 +900,14 @@ if (ssl_xfer_buffer_lwm >= ssl_xfer_buffer_hwm)
 
   /* Handle genuine errors */
 
 
   /* Handle genuine errors */
 
+  else if (error == SSL_ERROR_SSL)
+    {
+    ERR_error_string(ERR_get_error(), ssl_errstring);
+    log_write(0, LOG_MAIN, "TLS error (SSL_write): %s", ssl_errstring);
+    ssl_xfer_error = 1;
+    return EOF;
+    }
+
   else if (error != SSL_ERROR_NONE)
     {
     DEBUG(D_tls) debug_printf("Got SSL error %d\n", error);
   else if (error != SSL_ERROR_NONE)
     {
     DEBUG(D_tls) debug_printf("Got SSL error %d\n", error);