X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fdb%2Fmysql.cpp;h=cf2bb7ebf8c0d3a6b7a39bb65ccd83924bd7e5b3;hb=3d3967b16610579e977b5d8685f3eedb10cbc23a;hp=304d4963dcaed689e54751ca1b6ed756405e6f80;hpb=4dcc14eba3c118e286b9e3fec1221c34ab674f13;p=cassiopeia.git diff --git a/src/db/mysql.cpp b/src/db/mysql.cpp index 304d496..cf2bb7e 100644 --- a/src/db/mysql.cpp +++ b/src/db/mysql.cpp @@ -10,6 +10,7 @@ std::shared_ptr MySQLJobProvider::lib_ref( //Initializer: Store the return code as a pointer to an integer new int( mysql_library_init( 0, NULL, NULL ) ), + //Finalizer: Check the pointer and free resources []( int* ref ) { if( !ref ) { @@ -36,19 +37,8 @@ MySQLJobProvider::MySQLJobProvider( const std::string& server, const std::string connect( server, user, password, database ); } -MySQLJobProvider::~MySQLJobProvider() { - disconnect(); -} - bool MySQLJobProvider::connect( const std::string& server, const std::string& user, const std::string& password, const std::string& database ) { - if( conn ) { - if( !disconnect() ) { - return false; - } - - conn.reset(); - } - + disconnect(); conn = _connect( server, user, password, database ); return !!conn; @@ -58,13 +48,13 @@ std::shared_ptr MySQLJobProvider::_connect( const std::string& server, co MYSQL* tmp( mysql_init( NULL ) ); if( !tmp ) { - return std::shared_ptr(); + return nullptr; } tmp = mysql_real_connect( tmp, server.c_str(), user.c_str(), password.c_str(), database.c_str(), 3306, NULL, CLIENT_COMPRESS ); if( !tmp ) { - return std::shared_ptr(); + return nullptr; } auto l = lib_ref; @@ -121,7 +111,7 @@ std::shared_ptr MySQLJobProvider::fetchJob() { std::tie( err, res ) = query( q ); if( err ) { - return std::shared_ptr(); + return nullptr; } unsigned int num = mysql_num_fields( res.get() ); @@ -129,15 +119,15 @@ std::shared_ptr MySQLJobProvider::fetchJob() { MYSQL_ROW row = mysql_fetch_row( res.get() ); if( !row ) { - return std::shared_ptr(); + return nullptr; } - std::shared_ptr job( new Job() ); + auto job = std::make_shared(); unsigned long* l = mysql_fetch_lengths( res.get() ); if( !l ) { - return std::shared_ptr(); + return nullptr; } job->id = std::string( row[0], row[0] + l[0] ); @@ -182,7 +172,6 @@ void MySQLJobProvider::finishJob( std::shared_ptr job ) { if( query( q ).first ) { throw "No database entry found."; } - } void MySQLJobProvider::failJob( std::shared_ptr job ) { @@ -198,7 +187,7 @@ void MySQLJobProvider::failJob( std::shared_ptr job ) { } std::shared_ptr MySQLJobProvider::fetchTBSCert( std::shared_ptr job ) { - std::shared_ptr cert = std::shared_ptr( new TBSCertificate() ); + auto cert = std::make_shared(); std::string q = "SELECT md, profile, csr_name, csr_type, keyname FROM certs INNER JOIN profiles ON profiles.id = certs.profile WHERE certs.id='" + this->escape_string( job->target ) + "'"; int err = 0; @@ -208,19 +197,19 @@ std::shared_ptr MySQLJobProvider::fetchTBSCert( std::shared_ptr< std::tie( err, res ) = query( q ); if( err ) { - return std::shared_ptr(); + return nullptr; } MYSQL_ROW row = mysql_fetch_row( res.get() ); if( !row ) { - return std::shared_ptr(); + return nullptr; } unsigned long* l = mysql_fetch_lengths( res.get() ); if( !l ) { - return std::shared_ptr(); + return nullptr; } std::string profileName = std::string( row[4], row[4] + l[4] ); @@ -244,7 +233,7 @@ std::shared_ptr MySQLJobProvider::fetchTBSCert( std::shared_ptr< if( err ) { std::cout << mysql_error( this->conn.get() ); - return std::shared_ptr(); + return nullptr; } std::cout << "Fetching SANs" << std::endl; @@ -253,7 +242,7 @@ std::shared_ptr MySQLJobProvider::fetchTBSCert( std::shared_ptr< unsigned long* l = mysql_fetch_lengths( res.get() ); if( !l ) { - return std::shared_ptr(); + return nullptr; } std::shared_ptr nSAN = std::shared_ptr( new SAN() ); @@ -267,7 +256,7 @@ std::shared_ptr MySQLJobProvider::fetchTBSCert( std::shared_ptr< if( err ) { std::cout << mysql_error( this->conn.get() ); - return std::shared_ptr(); + return nullptr; } @@ -275,7 +264,7 @@ std::shared_ptr MySQLJobProvider::fetchTBSCert( std::shared_ptr< unsigned long* l = mysql_fetch_lengths( res.get() ); if( !l ) { - return std::shared_ptr(); + return nullptr; } std::shared_ptr nAVA = std::shared_ptr( new AVA() );