From d7e2022bdd1626fbcb614710bec20b4a42278f9a Mon Sep 17 00:00:00 2001 From: OpenGnSys Support Team Date: Fri, 18 Sep 2020 15:29:47 +0200 Subject: #941 pass og_dbi to og_dbi_get_computer_info() Reuse the existing dbi handler, instead of opening a new one. --- src/client.c | 91 ++++++++++++++++++++++++++++++++++-------------------------- src/dbi.c | 13 ++------- src/dbi.h | 3 +- 3 files changed, 55 insertions(+), 52 deletions(-) diff --git a/src/client.c b/src/client.c index 2bec54c..b56e861 100644 --- a/src/client.c +++ b/src/client.c @@ -129,14 +129,6 @@ static int og_resp_hardware(json_t *data, struct og_client *cli) return -1; } - err = og_dbi_get_computer_info(&computer, cli->addr.sin_addr); - if (err < 0) - return -1; - - snprintf(legacy.center, sizeof(legacy.center), "%d", computer.center); - snprintf(legacy.id, sizeof(legacy.id), "%d", computer.id); - snprintf(legacy.hardware, sizeof(legacy.hardware), "%s", hardware); - dbi = og_dbi_open(&dbi_config); if (!dbi) { syslog(LOG_ERR, "cannot open connection database (%s:%d)\n", @@ -144,6 +136,16 @@ static int og_resp_hardware(json_t *data, struct og_client *cli) return -1; } + err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr); + if (err < 0) { + og_dbi_close(dbi); + return -1; + } + + snprintf(legacy.center, sizeof(legacy.center), "%d", computer.center); + snprintf(legacy.id, sizeof(legacy.id), "%d", computer.id); + snprintf(legacy.hardware, sizeof(legacy.hardware), "%s", hardware); + res = actualizaHardware(dbi, legacy.hardware, legacy.id, computer.name, legacy.center); og_dbi_close(dbi); @@ -195,15 +197,6 @@ static int og_resp_software(json_t *data, struct og_client *cli) return -1; } - err = og_dbi_get_computer_info(&computer, cli->addr.sin_addr); - if (err < 0) - return -1; - - snprintf(legacy.software, sizeof(legacy.software), "%s", software); - snprintf(legacy.part, sizeof(legacy.part), "%s", partition); - snprintf(legacy.id, sizeof(legacy.id), "%d", computer.id); - snprintf(legacy.center, sizeof(legacy.center), "%d", computer.center); - dbi = og_dbi_open(&dbi_config); if (!dbi) { syslog(LOG_ERR, "cannot open connection database (%s:%d)\n", @@ -211,6 +204,17 @@ static int og_resp_software(json_t *data, struct og_client *cli) return -1; } + err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr); + if (err < 0) { + og_dbi_close(dbi); + return -1; + } + + snprintf(legacy.software, sizeof(legacy.software), "%s", software); + snprintf(legacy.part, sizeof(legacy.part), "%s", partition); + snprintf(legacy.id, sizeof(legacy.id), "%d", computer.id); + snprintf(legacy.center, sizeof(legacy.center), "%d", computer.center); + res = actualizaSoftware(dbi, legacy.software, legacy.part, legacy.id, computer.name, legacy.center); og_dbi_close(dbi); @@ -310,10 +314,6 @@ static int og_resp_refresh(json_t *data, struct og_client *cli) return err; } - err = og_dbi_get_computer_info(&computer, cli->addr.sin_addr); - if (err < 0) - return -1; - if (strlen(serial_number) > 0) snprintf(cfg, sizeof(cfg), "ser=%s\n", serial_number); @@ -349,6 +349,13 @@ static int og_resp_refresh(json_t *data, struct og_client *cli) __func__, __LINE__); return -1; } + + err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr); + if (err < 0) { + og_dbi_close(dbi); + return -1; + } + res = actualizaConfiguracion(dbi, cfg, computer.id); og_dbi_close(dbi); @@ -453,9 +460,18 @@ static int og_resp_image_create(json_t *data, struct og_client *cli) return -1; } - err = og_dbi_get_computer_info(&computer, cli->addr.sin_addr); - if (err < 0) + dbi = og_dbi_open(&dbi_config); + if (!dbi) { + syslog(LOG_ERR, "cannot open connection database (%s:%d)\n", + __func__, __LINE__); + return -1; + } + + err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr); + if (err < 0) { + og_dbi_close(dbi); return -1; + } snprintf(soft_legacy.center, sizeof(soft_legacy.center), "%d", computer.center); @@ -470,13 +486,6 @@ static int og_resp_image_create(json_t *data, struct og_client *cli) snprintf(img_legacy.name, sizeof(img_legacy.name), "%s", name); snprintf(img_legacy.repo, sizeof(img_legacy.repo), "%s", repo); - dbi = og_dbi_open(&dbi_config); - if (!dbi) { - syslog(LOG_ERR, "cannot open connection database (%s:%d)\n", - __func__, __LINE__); - return -1; - } - res = actualizaSoftware(dbi, soft_legacy.software, img_legacy.part, @@ -551,16 +560,6 @@ static int og_resp_image_restore(json_t *data, struct og_client *cli) return -1; } - err = og_dbi_get_computer_info(&computer, cli->addr.sin_addr); - if (err < 0) - return -1; - - snprintf(img_legacy.image_id, sizeof(img_legacy.image_id), "%s", - image_id); - snprintf(img_legacy.part, sizeof(img_legacy.part), "%s", partition); - snprintf(img_legacy.disk, sizeof(img_legacy.disk), "%s", disk); - snprintf(soft_legacy.id, sizeof(soft_legacy.id), "%d", computer.id); - dbi = og_dbi_open(&dbi_config); if (!dbi) { syslog(LOG_ERR, "cannot open connection database (%s:%d)\n", @@ -587,6 +586,18 @@ static int og_resp_image_restore(json_t *data, struct og_client *cli) "%d", dbi_result_get_uint(query_result, "idperfilsoft")); dbi_result_free(query_result); + err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr); + if (err < 0) { + og_dbi_close(dbi); + return -1; + } + + snprintf(img_legacy.image_id, sizeof(img_legacy.image_id), "%s", + image_id); + snprintf(img_legacy.part, sizeof(img_legacy.part), "%s", partition); + snprintf(img_legacy.disk, sizeof(img_legacy.disk), "%s", disk); + snprintf(soft_legacy.id, sizeof(soft_legacy.id), "%d", computer.id); + res = actualizaRestauracionImagen(dbi, img_legacy.image_id, img_legacy.disk, diff --git a/src/dbi.c b/src/dbi.c index 51edf31..94f3de8 100644 --- a/src/dbi.c +++ b/src/dbi.c @@ -49,18 +49,12 @@ void og_dbi_close(struct og_dbi *dbi) free(dbi); } -int og_dbi_get_computer_info(struct og_computer *computer, struct in_addr addr) +int og_dbi_get_computer_info(struct og_dbi *dbi, struct og_computer *computer, + struct in_addr addr) { const char *msglog; - struct og_dbi *dbi; dbi_result result; - dbi = og_dbi_open(&dbi_config); - if (!dbi) { - syslog(LOG_ERR, "cannot open connection database (%s:%d)\n", - __func__, __LINE__); - return -1; - } result = dbi_conn_queryf(dbi->conn, "SELECT ordenadores.idordenador," " ordenadores.nombreordenador," @@ -74,14 +68,12 @@ int og_dbi_get_computer_info(struct og_computer *computer, struct in_addr addr) dbi_conn_error(dbi->conn, &msglog); syslog(LOG_ERR, "failed to query database (%s:%d) %s\n", __func__, __LINE__, msglog); - og_dbi_close(dbi); return -1; } if (!dbi_result_next_row(result)) { syslog(LOG_ERR, "client does not exist in database (%s:%d)\n", __func__, __LINE__); dbi_result_free(result); - og_dbi_close(dbi); return -1; } @@ -94,7 +86,6 @@ int og_dbi_get_computer_info(struct og_computer *computer, struct in_addr addr) OG_DB_COMPUTER_NAME_MAXLEN); dbi_result_free(result); - og_dbi_close(dbi); return 0; } diff --git a/src/dbi.h b/src/dbi.h index 1d11aa2..ec7c042 100644 --- a/src/dbi.h +++ b/src/dbi.h @@ -58,6 +58,7 @@ struct og_computer { }; struct in_addr; -int og_dbi_get_computer_info(struct og_computer *computer, struct in_addr addr); +int og_dbi_get_computer_info(struct og_dbi *dbi, struct og_computer *computer, + struct in_addr addr); #endif -- cgit v1.2.3-18-g5258