@@ -3028,43 +3028,27 @@ void connection::tls_version()
3028
3028
3029
3029
res->next ();
3030
3030
3031
- std::string tls_versions = res->getString (2 );
3032
-
3033
- connection_properties[" OPT_SSL_MODE" ] = sql::SSL_MODE_REQUIRED;
3034
-
3035
- if (tls_versions.find (" TLSv1" ) != std::string::npos)
3036
- {
3037
- connection_properties[" OPT_TLS_VERSION" ] = sql::SQLString (" TLSv1" );
3038
-
3039
- created_objects.clear ();
3040
- con.reset (driver->connect (connection_properties));
3041
-
3042
- stmt.reset (con->createStatement ());
3043
- res.reset (stmt->executeQuery (" SHOW SESSION STATUS LIKE 'Ssl_version'" ));
3031
+ std::string tls_available = res->getString (2 );
3044
3032
3045
- res-> next () ;
3033
+ std::vector<std::string> tls_versions ;
3046
3034
3047
- ASSERT_EQUALS (" TLSv1" , res->getString (2 ));
3048
- }
3035
+ size_t begin_pos = 0 ;
3049
3036
3050
- if (tls_versions.find (" TLSv1.1" ) != std::string::npos)
3037
+ for ( size_t end_pos = tls_available.find_first_of (' ,' ,begin_pos);
3038
+ begin_pos != std::string::npos || end_pos != std::string::npos;
3039
+ begin_pos = end_pos == std::string::npos ? end_pos : end_pos+1 ,
3040
+ end_pos = tls_available.find_first_of (' ,' ,begin_pos))
3051
3041
{
3052
- connection_properties[" OPT_TLS_VERSION" ] = sql::SQLString (" TLSv1,TLSv1.1" );
3053
-
3054
- created_objects.clear ();
3055
- con.reset (driver->connect (connection_properties));
3056
-
3057
- stmt.reset (con->createStatement ());
3058
- res.reset (stmt->executeQuery (" SHOW SESSION STATUS LIKE 'Ssl_version'" ));
3059
-
3060
- res->next ();
3061
-
3062
- ASSERT_EQUALS (" TLSv1.1" , res->getString (2 ));
3042
+ tls_versions.push_back (tls_available.substr (begin_pos, end_pos));
3063
3043
}
3064
3044
3065
- if (tls_versions.find (" TLSv1.2" ) != std::string::npos)
3045
+ connection_properties[" OPT_SSL_MODE" ] = sql::SSL_MODE_REQUIRED;
3046
+
3047
+ for (std::vector<std::string>::const_iterator version = tls_versions.begin ();
3048
+ version != tls_versions.end ();
3049
+ ++version)
3066
3050
{
3067
- connection_properties[" OPT_TLS_VERSION" ] = sql::SQLString (" TLSv1,TLSv1.1,TLSv1.2 " );
3051
+ connection_properties[" OPT_TLS_VERSION" ] = sql::SQLString (*version );
3068
3052
3069
3053
created_objects.clear ();
3070
3054
con.reset (driver->connect (connection_properties));
@@ -3074,7 +3058,7 @@ void connection::tls_version()
3074
3058
3075
3059
res->next ();
3076
3060
3077
- ASSERT_EQUALS (" TLSv1.2 " , res->getString (2 ));
3061
+ ASSERT_EQUALS (*version , res->getString (2 ));
3078
3062
}
3079
3063
3080
3064
}
0 commit comments