diff --git a/platform/src/ssl_stream.cpp b/platform/src/ssl_stream.cpp index c821ab1..52fd29e 100644 --- a/platform/src/ssl_stream.cpp +++ b/platform/src/ssl_stream.cpp @@ -1163,9 +1163,13 @@ void ssl_stream_process_error(struct ssl_stream * s_stream, unsigned long sslerr { case CONN_DIR_DOWNSTREAM: s_upstream= &(s_stream->peer->up_parts); - if(sslerr==SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN && - s_upstream->is_server_cert_verify_passed && - s_upstream->verify_result.is_hostmatched) + if( (sslerr==SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN || + sslerr==SSL_R_SSLV3_ALERT_BAD_CERTIFICATE || + sslerr==SSL_R_TLSV1_ALERT_UNKNOWN_CA || + sslerr==SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE || + sslerr==SSL_R_UNKNOWN_CERTIFICATE_TYPE ||) + && s_upstream->is_server_cert_verify_passed + && s_upstream->verify_result.is_hostmatched) { s_upstream->svc_status.pinning_status=PINNING_ST_PINNING; ssl_stream_set_cmsg_integer(s_stream, TFE_CMSG_SSL_PINNING_STATE, PINNING_ST_PINNING);