schema: fix bug when og_dbi_open cannot open a connection

When og_dbi_open cannot open a connection during schema update, then
ogServer crashes.

og_dbi_open returns NULL when it cannot open a DB connection.

Do not use dbi variable if og_dbi_open is unable to open a DB
connection.

Add syslog message when database schema couldn't be updated.
master
Jose M. Guisado 2023-09-28 10:01:09 +02:00
parent e080fd5526
commit 35a3b0a1a3
2 changed files with 5 additions and 5 deletions

View File

@ -92,8 +92,10 @@ int main(int argc, char *argv[])
ev_io_init(&ev_io_agent_rest, og_server_accept_cb, socket_agent_rest, EV_READ);
ev_io_start(og_loop, &ev_io_agent_rest);
if (og_dbi_schema_update() < 0)
if (og_dbi_schema_update() < 0) {
syslog(LOG_ERR, "Cannot update the database schema\n");
exit(EXIT_FAILURE);
}
if (og_dbi_schedule_get() < 0) {
syslog(LOG_ERR, "Cannot connect to database\n");

View File

@ -255,13 +255,11 @@ int og_dbi_schema_update(void)
{
int version, i, err;
struct og_dbi *dbi;
const char *msglog;
dbi = og_dbi_open(&ogconfig.db);
if (!dbi) {
dbi_conn_error(dbi->conn, &msglog);
syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
__func__, __LINE__, msglog);
syslog(LOG_ERR, "cannot open a database connection (%s:%d)\n",
__func__, __LINE__);
return -1;
}