OSDN Git Service

removed flag for log option
[opengatem/opengatem.git] / mngsrc / managementdb.c
index a14c5af..6d8153f 100644 (file)
@@ -491,7 +491,10 @@ int getNextUsageLogFromMngDb(char* userId, char* extraId, char* macAddr, char* d
   /* set default values */
   macAddr[0]=deviceName[0]=openTime[0]=gatewayName[0]='\0';
 
-  /* if do not get result yet */
+  /* if session table is not found in management db, return */
+  if(!IsTableFoundInMngDb("sessionmd")) return FALSE;
+
+  /* if do not get result yet (if first call) */
   if(res==NULL){
 
     /* prepare query string */
@@ -511,7 +514,8 @@ int getNextUsageLogFromMngDb(char* userId, char* extraId, char* macAddr, char* d
     if (mysql_query(&mysql, queryStr)){
 
       /* query error */
-      /* might be caused by <SaveLogToMngDb> setting in opengatemd.conf */
+      err_msg("ERR at %s#%d: mysql query: %s",__FILE__,__LINE__,
+             mysql_error(&mysql));
       return FALSE; 
     }
     
@@ -815,6 +819,44 @@ int doesMacAddrBelongToUser(char* macAddr, char* userId, char* extraId){
   return exists;
 }
 
+/******************************************
+is found table in management db
+input=table name
+return value: 1=found,0=not found or error
+******************************************/
+int isTableFoundInMngDb(char* table){
+  MYSQL_RES *res;
+  MYSQL_ROW row;
+  int found=FALSE;
+  char queryStr[BUFFMAXLN];
+
+  /* if no table, return false */
+  if(isNull(table)) return FALSE;
+  
+  /* prepare query string */
+  snprintf(queryStr, BUFFMAXLN, 
+          "show tables like '%s'", table);
+
+  /* send SQL query */
+  if (mysql_query(&mysql, queryStr)){
+     err_msg("ERR at %s#%d: mysql query: %s",__FILE__,__LINE__,
+            mysql_error(&mysql));
+     return ERROR;
+  }
+  res = mysql_use_result(&mysql);
+  
+  /* output table row */
+  row = mysql_fetch_row(res);
+
+  /* row==NULL means getting no record */
+  if(row==NULL) found=FALSE;
+  else          found=TRUE;
+
+  mysql_free_result(res);
+  return found;
+}
+
+
 /********************************************
  routines for debugging output
 ********************************************/
@@ -990,3 +1032,12 @@ int DoesMacAddrBelongToUser(char* macAddr, char* userId, char* extraId){
   if(debug>1) err_msg("DEBUG:(%d)<=doesMacAddrBelongToUser( )",ret);
   return ret;
 }
+
+int IsTableFoundInMngDb(char* table){
+  int ret;
+  if(debug>1) err_msg("DEBUG:=>isTableFoundInMngDb(%s)", table);
+  ret = isTableFoundInMngDb(table);
+  if(debug>1) err_msg("DEBUG:(%d)<=isTableFoundInMngDb()", ret);
+  return ret;
+}
+