瀏覽代碼

secfilter: convert module to use DB_TABLE_VERSION_ERROR helper

    - convert module to use DB_TABLE_VERSION_ERROR helper
    - unify error handling (properly close database on errors, null db handle)
Henning Westerholt 6 年之前
父節點
當前提交
5b259f6066
共有 1 個文件被更改,包括 5 次插入52 次删除
  1. 5 52
      src/modules/secfilter/secfilter_db.c

+ 5 - 52
src/modules/secfilter/secfilter_db.c

@@ -31,20 +31,11 @@ int mod_version = 1;
 static db_func_t db_funcs;		 /* Database API functions */
 static db1_con_t *db_handle = 0; /* Database connection handle */
 
-/* Version table */
-static str version_table_name = str_init("version");
-static str table_name_col = str_init("table_name");
-static str table_version_col = str_init("table_version");
-
 
 /* Check module version */
 int check_version(void)
 {
-	int version = 0, res = 0;
-	db_key_t db_keys[1];
-	db_val_t db_vals[1];
-	db_key_t db_cols[1];
-	db1_res_t *db_res = NULL;
+	str table = str_init("secfilter");
 
 	/* Connect to DB */
 	db_handle = db_funcs.init(&secf_db_url);
@@ -53,51 +44,13 @@ int check_version(void)
 		return -1;
 	}
 
-	/* Prepare the data for the query */
-	db_cols[0] = &table_version_col;
-	db_keys[0] = &table_name_col;
-
-	db_vals[0].type = DB1_STRING;
-	db_vals[0].nul = 0;
-	db_vals[0].val.string_val = "secfilter";
-
-	/* Execute query */
-	if(db_funcs.use_table(db_handle, &version_table_name) < 0) {
-		LM_ERR("Unable to use table '%.*s'\n", version_table_name.len,
-				version_table_name.s);
+	if (db_check_table_version(&db_funcs, db_handle, &table, mod_version) < 0) {
+		DB_TABLE_VERSION_ERROR(table);
+		db_funcs.close(db_handle);
 		return -1;
 	}
-	if(db_funcs.query(
-			   db_handle, db_keys, NULL, db_vals, db_cols, 1, 1, NULL, &db_res)
-			< 0) {
-		LM_ERR("Failed to query database\n");
-		res = -1;
-		goto done;
-	}
 
-	if(RES_ROW_N(db_res) == 0) {
-		LM_ERR("No version value found in database. It must be %d\n",
-				mod_version);
-		res = -1;
-		goto done;
-	}
-
-	/* Get the version value */
-	version = RES_ROWS(db_res)[0].values[0].val.int_val;
-
-	if(version != mod_version) {
-		LM_ERR("Wrong version value. Correct version is %d but found %d\n",
-				mod_version, version);
-		res = -1;
-		goto done;
-	}
-
-done:
-	if(db_res != NULL && db_funcs.free_result(db_handle, db_res) < 0)
-		LM_DBG("Failed to free the result\n");
-	db_funcs.close(db_handle);
-
-	return res;
+	return 0;
 }