|
|
|
|
@ -514,6 +514,11 @@ MySQL_Connection::~MySQL_Connection() {
|
|
|
|
|
|
|
|
|
|
if (connected_host_details.ip)
|
|
|
|
|
free(connected_host_details.ip);
|
|
|
|
|
|
|
|
|
|
if (ssl_params != NULL) {
|
|
|
|
|
delete ssl_params;
|
|
|
|
|
ssl_params = NULL;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
bool MySQL_Connection::set_autocommit(bool _ac) {
|
|
|
|
|
@ -740,7 +745,11 @@ void MySQL_Connection::connect_start() {
|
|
|
|
|
mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "mysql_bug_102266", "Avoid MySQL bug https://bugs.mysql.com/bug.php?id=102266 , https://github.com/sysown/proxysql/issues/3276");
|
|
|
|
|
}
|
|
|
|
|
if (parent->use_ssl) {
|
|
|
|
|
MySQLServers_SslParams * ssl_params = MyHGM->get_Server_SSL_Params(parent->address, parent->port, userinfo->username);
|
|
|
|
|
if (ssl_params != NULL) {
|
|
|
|
|
delete ssl_params;
|
|
|
|
|
ssl_params = NULL;
|
|
|
|
|
}
|
|
|
|
|
ssl_params = MyHGM->get_Server_SSL_Params(parent->address, parent->port, userinfo->username);
|
|
|
|
|
if (ssl_params == NULL) {
|
|
|
|
|
mysql_ssl_set(mysql,
|
|
|
|
|
mysql_thread___ssl_p2s_key,
|
|
|
|
|
@ -760,7 +769,6 @@ void MySQL_Connection::connect_start() {
|
|
|
|
|
);
|
|
|
|
|
mysql_options(mysql, MYSQL_OPT_SSL_CRL, ssl_params->ssl_crl.c_str());
|
|
|
|
|
mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH, ssl_params->ssl_crlpath.c_str());
|
|
|
|
|
delete ssl_params;
|
|
|
|
|
}
|
|
|
|
|
mysql_options(mysql, MARIADB_OPT_SSL_KEYLOG_CALLBACK, (void*)proxysql_keylog_write_line_callback);
|
|
|
|
|
}
|
|
|
|
|
@ -1151,13 +1159,29 @@ handler_again:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!ret_mysql) {
|
|
|
|
|
// always increase the counter
|
|
|
|
|
proxy_error("Failed to mysql_real_connect() on %u:%s:%d , FD (Conn:%d , MyDS:%d) , %d: %s.\n", parent->myhgc->hid, parent->address, parent->port, mysql->net.fd , myds->fd, mysql_errno(mysql), mysql_error(mysql));
|
|
|
|
|
NEXT_IMMEDIATE(ASYNC_CONNECT_FAILED);
|
|
|
|
|
int myerr = mysql_errno(mysql);
|
|
|
|
|
if (ssl_params != NULL && myerr == 2026) {
|
|
|
|
|
proxy_error("Failed to mysql_real_connect() on %u:%s:%d , FD (Conn:%d , MyDS:%d) , %d: %s. SSL Params: %s , %s , %s , %s , %s , %s , %s , %s\n",
|
|
|
|
|
parent->myhgc->hid, parent->address, parent->port, mysql->net.fd , myds->fd, mysql_errno(mysql), mysql_error(mysql),
|
|
|
|
|
ssl_params->ssl_ca.c_str() , ssl_params->ssl_cert.c_str() , ssl_params->ssl_key.c_str() , ssl_params->ssl_capath.c_str() ,
|
|
|
|
|
ssl_params->ssl_crl.c_str() , ssl_params->ssl_crlpath.c_str() , ssl_params->ssl_cipher.c_str() , ssl_params->tls_version.c_str()
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
proxy_error("Failed to mysql_real_connect() on %u:%s:%d , FD (Conn:%d , MyDS:%d) , %d: %s.\n", parent->myhgc->hid, parent->address, parent->port, mysql->net.fd , myds->fd, mysql_errno(mysql), mysql_error(mysql));
|
|
|
|
|
}
|
|
|
|
|
if (ssl_params != NULL) {
|
|
|
|
|
delete ssl_params;
|
|
|
|
|
ssl_params = NULL;
|
|
|
|
|
}
|
|
|
|
|
NEXT_IMMEDIATE(ASYNC_CONNECT_FAILED);
|
|
|
|
|
} else {
|
|
|
|
|
NEXT_IMMEDIATE(ASYNC_CONNECT_SUCCESSFUL);
|
|
|
|
|
if (ssl_params != NULL) {
|
|
|
|
|
delete ssl_params;
|
|
|
|
|
ssl_params = NULL;
|
|
|
|
|
}
|
|
|
|
|
NEXT_IMMEDIATE(ASYNC_CONNECT_SUCCESSFUL);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
break;
|
|
|
|
|
case ASYNC_CONNECT_SUCCESSFUL:
|
|
|
|
|
if (mysql && ret_mysql) {
|
|
|
|
|
// PMC-10005
|
|
|
|
|
|