summaryrefslogtreecommitdiff
path: root/vio
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-03-18 12:34:48 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2021-03-18 12:34:48 +0200
commit19052b6debc1aeb4ef6ccbc36cdc92c10cf968b6 (patch)
tree9eec011f81a7c4868283ed02b823771798fe45d4 /vio
parenteb7c5530eccb7d6782077e5562f5a471d2ccbc01 (diff)
parentc557e9540ab6058713a7c78dfa3df366ea92dd92 (diff)
downloadmariadb-git-19052b6debc1aeb4ef6ccbc36cdc92c10cf968b6.tar.gz
Merge 10.2 into 10.3
Diffstat (limited to 'vio')
-rw-r--r--vio/viossl.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/vio/viossl.c b/vio/viossl.c
index 30946d3261c..8fdc8a3d68c 100644
--- a/vio/viossl.c
+++ b/vio/viossl.c
@@ -109,6 +109,21 @@ static my_bool ssl_should_retry(Vio *vio, int ret, enum enum_vio_io_event *event
SSL *ssl= vio->ssl_arg;
my_bool should_retry= TRUE;
+#if defined(ERR_LIB_X509) && defined(X509_R_CERT_ALREADY_IN_HASH_TABLE)
+ /*
+ Ignore error X509_R_CERT_ALREADY_IN_HASH_TABLE.
+ This is a workaround for an OpenSSL bug in an older (< 1.1.1)
+ OpenSSL version.
+ */
+ unsigned long err = ERR_peek_error();
+ if (ERR_GET_LIB(err) == ERR_LIB_X509 &&
+ ERR_GET_REASON(err) == X509_R_CERT_ALREADY_IN_HASH_TABLE)
+ {
+ ERR_clear_error();
+ return TRUE;
+ }
+#endif
+
/* Retrieve the result for the SSL I/O operation. */
ssl_error= SSL_get_error(ssl, ret);