Changeset - 96697bb825b9
[Not reviewed]
default
0 2 0
Ethan Zonca (ethanzonca) - 16 years ago 2010-02-20 00:23:14
e@ethanzonca.com
Added slave authentication function using sproc that does not exist yet
2 files changed with 43 insertions and 29 deletions:
0 comments (0 inline, 0 general)
src/server/mysql.c
Show inline comments
 
@@ -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;
 
    }
 
  
 
  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;
 
}
src/server/mysql.h
Show inline comments
 
@@ -66,7 +66,10 @@ int change_job_priority(distrend_mysql_c
 
*/
 
int find_jobframe(distrend_mysql_conn_t conn, int32_t slaveKey, jobnum_t *jobKey, int32_t *frameNum);
 

	
 

	
 
/**
 
  Slave Authenticator: Checks to see if a slave's ID and password match
 
*/
 
int auth_slave(distrend_mysql_conn_t conn, int32_t slavekey, int32_t slavepass);
 

	
 

	
 
#endif /* MYSQL_H_ */
0 comments (0 inline, 0 general)