diff --git a/src/server/mysql.c b/src/server/mysql.c --- a/src/server/mysql.c +++ b/src/server/mysql.c @@ -51,7 +51,7 @@ distrend_mysql_result_t mysqlQuery(distr check if it returned NULL or not. @return 0 on success */ -int mysqlResultFree(distrend_mysql_conn_t conn, distrend_mysql_result_t result); +int mysqlResultFree(distrend_mysql_result_t result); /** reads an integer mysql field value @@ -161,8 +161,7 @@ distrend_mysql_result_t mysqlQuery(distr if(mysql_ping(conn->mysqlconn)) { - fprintf(stderr, "mysql_ping() failed: %s\n", mysql_error(conn->mysqlconn)); - return NULL; + fprintf(stderr, "MySQL connection broken, and reconnect is disabled!\n"); } fprintf(stderr,"Querying... "); @@ -206,8 +205,6 @@ distrend_mysql_result_t mysqlQuery(distr distrenresult = malloc(sizeof(struct distrend_mysql_result)); if(!distrenresult) { - while(mysql_fetch_row(result)) - ; mysql_free_result(result); return NULL; } @@ -218,45 +215,28 @@ distrend_mysql_result_t mysqlQuery(distr return distrenresult; } -int mysqlResultFree(distrend_mysql_conn_t conn, distrend_mysql_result_t result) +int mysqlResultFree(distrend_mysql_result_t result) { size_t counter; - MYSQL_RES *mysqlresult; if(!result) - { - fprintf(stderr, "mysqlResultFree(): warning, passed NULL parameter\n"); - return 0; - } - + return 0; + if(result->pointlesscheck != FORTY_TWO) fprintf(stderr, "%s:%d: I didn't get the type of handle I wanted\n", __FILE__, __LINE__); - mysqlresult = result->mysqlresult; - free(result); - /** Must flush the resultset buffer. */ for(counter = 0; - mysql_fetch_row(mysqlresult); + mysql_fetch_row(result->mysqlresult); counter ++) ; if(counter) fprintf(stderr, "Calling function did not flush %d rows\n", (int)counter); - while(mysql_more_results(conn->mysqlconn)) - { - fprintf(stderr, "flushing an extraneous result set\n"); - mysql_next_result(conn->mysqlconn); - mysqlresult = mysql_use_result(conn->mysqlconn); - if(mysqlresult) - { - while(mysql_fetch_row(mysqlresult)) - ; - mysql_free_result(mysqlresult); - } - } + mysql_free_result(result->mysqlresult); + free(result); return 0; } @@ -315,14 +295,45 @@ int find_jobframe(distrend_mysql_conn_t row = mysql_fetch_row(result->mysqlresult); if(!row) { - mysqlResultFree(conn, result); + mysqlResultFree(result); return 1; } rtn = distrend_mysql_getint(row, 0, (int32_t *)jobkey); rtn += distrend_mysql_getint(row, 1, framenum); - - mysqlResultFree(conn, result); + + mysqlResultFree(result); return rtn; } + +int auth_slave(distrend_mysql_conn_t conn, int32_t slavekey, int32_t slavepass) +{ + distrend_mysql_result_t result; + char *query; + MYSQL_ROW row; + int32_t *isAuth = 0; + + int rtn; + + _distren_asprintf(&query, "CALL `distren`.`Slave_Auth`(%d,%d);", slavekey, slavepass); + + result = mysqlQuery(conn, query, 2); + free(query); + + if(!result) + return 1; + + row = mysql_fetch_row(result->mysqlresult); + if(!row) + { + mysqlResultFree(result); + return 1; + } + + rtn = distrend_mysql_getint(row, 0, (int32_t *)isAuth); + + mysqlResultFree(result); + + return rtn; +}