@@ -543,29 +543,28 @@ _mysql_ConnectionObject_Initialize(
543543 mysql_options (& (self -> connection ), MYSQL_OPT_SSL_CIPHER , cipher );
544544 }
545545
546- if (ssl_mode_set ) {
547546#ifdef HAVE_ENUM_MYSQL_OPT_SSL_MODE
547+ if (ssl_mode_set ) {
548548 mysql_options (& (self -> connection ), MYSQL_OPT_SSL_MODE , & ssl_mode_num );
549+ }
549550#else
550- // MariaDB doesn't support MYSQL_OPT_SSL_MODE.
551- // See https://github.com/PyMySQL/mysqlclient/issues/474
552- // TODO: Does MariaDB supports PREFERRED and VERIFY_CA?
553- // We support only two levels for now.
554- my_bool enforce_tls = 1 ;
555- if (ssl_mode_num >= SSLMODE_REQUIRED ) {
556- mysql_optionsv (& (self -> connection ), MYSQL_OPT_SSL_ENFORCE , (void * )& enforce_tls );
557- }
558- if (ssl_mode_num >= SSLMODE_VERIFY_CA ) {
559- mysql_optionsv (& (self -> connection ), MYSQL_OPT_SSL_VERIFY_SERVER_CERT , (void * )& enforce_tls );
560- }
561- else {
562- // mariadb-connector-c changed the default value of MYSQL_OPT_SSL_VERIFY_SERVER_CERT to 1.
563- // https://github.com/mariadb-corporation/mariadb-connector-c/commit/8dffd56936df3d03eeccf47904773860a0cdeb57
564- // for users don't want to verify the server certificate, we provide an option to disable it.
565- my_bool my_false = 0 ;
566- mysql_optionsv (& (self -> connection ), MYSQL_OPT_SSL_VERIFY_SERVER_CERT , (void * )& my_false );
567- }
568- #endif
551+ // MariaDB doesn't support MYSQL_OPT_SSL_MODE.
552+ // See https://github.com/PyMySQL/mysqlclient/issues/474
553+ // And MariDB 11.4 changed the default value of MYSQL_OPT_SSL_ENFORCE and
554+ // MYSQL_OPT_SSL_VERIFY_SERVER_CERT to 1.
555+ // https://github.com/mariadb-corporation/mariadb-connector-c/commit/8dffd56936df3d03eeccf47904773860a0cdeb57
556+ // We emulate the ssl_mode and old behavior.
557+ my_bool my_true = 1 ;
558+ my_bool my_false = 0 ;
559+ if (ssl_mode_num >= SSLMODE_REQUIRED ) {
560+ mysql_optionsv (& (self -> connection ), MYSQL_OPT_SSL_ENFORCE , (void * )& my_true );
561+ } else {
562+ mysql_optionsv (& (self -> connection ), MYSQL_OPT_SSL_ENFORCE , (void * )& my_false );
563+ }
564+ if (ssl_mode_num >= SSLMODE_VERIFY_CA ) {
565+ mysql_optionsv (& (self -> connection ), MYSQL_OPT_SSL_VERIFY_SERVER_CERT , (void * )& my_true );
566+ } else {
567+ mysql_optionsv (& (self -> connection ), MYSQL_OPT_SSL_VERIFY_SERVER_CERT , (void * )& my_false );
569568 }
570569
571570 if (charset ) {
@@ -580,12 +579,9 @@ _mysql_ConnectionObject_Initialize(
580579 port , unix_socket , client_flag );
581580 Py_END_ALLOW_THREADS
582581
583- if (ssl ) {
584- int i ;
585- for (i = 0 ; i < n_ssl_keepref ; i ++ ) {
586- Py_DECREF (ssl_keepref [i ]);
587- ssl_keepref [i ] = NULL ;
588- }
582+ for (int i = 0 ; i < n_ssl_keepref ; i ++ ) {
583+ Py_DECREF (ssl_keepref [i ]);
584+ ssl_keepref [i ] = NULL ;
589585 }
590586
591587 if (!conn ) {
0 commit comments