/* allocates a new ssl object SYNOPSIS my_ssl_init mysql connection object RETURN VALUES NULL on error SSL new SSL object */ SSL *my_ssl_init(MYSQL *mysql) { int verify; SSL *ssl= NULL; DBUG_ENTER("my_ssl_init"); DBUG_ASSERT(mysql->net.vio->ssl == NULL); if (!my_ssl_initialized) my_ssl_start(mysql); if (!(ssl= SSL_new(SSL_context))) goto error; if (!SSL_set_app_data(ssl, mysql)) goto error; if (my_ssl_set_certs(ssl)) goto error; verify= (!mysql->options.ssl_ca && !mysql->options.ssl_capath) ? SSL_VERIFY_NONE : SSL_VERIFY_PEER; SSL_set_verify(ssl, verify, my_verify_callback); SSL_set_verify_depth(ssl, 1); DBUG_RETURN(ssl); error: if (ssl) SSL_free(ssl); DBUG_RETURN(NULL); }
/* allocates a new ssl object SYNOPSIS my_ssl_init mysql connection object RETURN VALUES NULL on error SSL new SSL object */ SSL *my_ssl_init(MYSQL *mysql) { SSL *ssl= NULL; DBUG_ENTER("my_ssl_init"); DBUG_ASSERT(mysql->net.vio->ssl == NULL); if (!my_ssl_initialized) my_ssl_start(mysql); pthread_mutex_lock(&LOCK_ssl_config); if (my_ssl_set_certs(mysql)) goto error; if (!(ssl= SSL_new(SSL_context))) goto error; if (!SSL_set_app_data(ssl, mysql)) goto error; pthread_mutex_unlock(&LOCK_ssl_config); DBUG_RETURN(ssl); error: pthread_mutex_unlock(&LOCK_ssl_config); if (ssl) SSL_free(ssl); DBUG_RETURN(NULL); }