summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_openssl.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 0c8b9d8ed..d4b565cb9 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -1115,6 +1115,7 @@ static void
ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, ngx_err_t err,
char *text)
{
+ int n;
ngx_uint_t level;
level = NGX_LOG_CRIT;
@@ -1148,6 +1149,34 @@ ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, ngx_err_t err,
break;
}
}
+
+ } else if (sslerr == SSL_ERROR_SSL) {
+
+ n = ERR_GET_REASON(ERR_peek_error());
+
+ /* handshake failures */
+ if (n == SSL_R_NO_SHARED_CIPHER
+ || n == SSL_R_UNEXPECTED_MESSAGE
+ || n == SSL_R_WRONG_VERSION_NUMBER
+ || n == SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED
+ || n == SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER
+ || n == SSL_R_TLSV1_ALERT_UNKNOWN_CA)
+ {
+ switch (c->log_error) {
+
+ case NGX_ERROR_IGNORE_ECONNRESET:
+ case NGX_ERROR_INFO:
+ level = NGX_LOG_INFO;
+ break;
+
+ case NGX_ERROR_ERR:
+ level = NGX_LOG_ERR;
+ break;
+
+ default:
+ break;
+ }
+ }
}
ngx_ssl_error(level, c->log, err, text);