@@ -543,23 +543,30 @@ _mysql_ConnectionObject_Initialize(
543
543
mysql_options (& (self -> connection ), MYSQL_OPT_SSL_CIPHER , cipher );
544
544
}
545
545
546
- if (ssl_mode_set ) {
547
546
#ifdef HAVE_ENUM_MYSQL_OPT_SSL_MODE
547
+ if (ssl_mode_set ) {
548
548
mysql_options (& (self -> connection ), MYSQL_OPT_SSL_MODE , & ssl_mode_num );
549
+ }
549
550
#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
- #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 );
562
568
}
569
+ #endif
563
570
564
571
if (charset ) {
565
572
mysql_options (& (self -> connection ), MYSQL_SET_CHARSET_NAME , charset );
@@ -573,12 +580,9 @@ _mysql_ConnectionObject_Initialize(
573
580
port , unix_socket , client_flag );
574
581
Py_END_ALLOW_THREADS
575
582
576
- if (ssl ) {
577
- int i ;
578
- for (i = 0 ; i < n_ssl_keepref ; i ++ ) {
579
- Py_DECREF (ssl_keepref [i ]);
580
- ssl_keepref [i ] = NULL ;
581
- }
583
+ for (int i = 0 ; i < n_ssl_keepref ; i ++ ) {
584
+ Py_DECREF (ssl_keepref [i ]);
585
+ ssl_keepref [i ] = NULL ;
582
586
}
583
587
584
588
if (!conn ) {
0 commit comments