struct db_driver *driver;
};
#define TIME_ERR ((time_t)-1) /* Be paranoid */
+#define RECONNECT_DEFAULT 2
#define DB_CES \
{ \
{ \
.key = "reconnect", \
.type = CONFIG_TYPE_INT, \
+ .u.value = RECONNECT_DEFAULT, \
}, \
{ \
.key = "ip_as_string", \
struct db_instance *di = (struct db_instance *) upi->private;
if (reconnect_ce(upi->config_kset).u.value) {
+ if (time(NULL) < di->reconnect)
+ return -1;
di->reconnect = time(NULL);
if (di->reconnect != TIME_ERR) {
ulogd_log(ULOGD_ERROR, "no connection to database, "
/* now we have created our statement, insert it */
- if (di->driver->execute(upi, di->stmt, strlen(di->stmt)) < 0)
- return _init_db(upi);
+ if (di->driver->execute(upi, di->stmt, strlen(di->stmt)) < 0) {
+ /* error occur, database connexion need to be closed */
+ di->driver->close_db(upi);
+ return _init_reconnect(upi);
+ }
return 0;
}