diff --git a/src/utils/dbi.c b/src/utils/dbi.c
index db93857fad42d9103d40c24d243fb48511af807e..1de2f1abe678b74dae092b4b51b40a888b68ceb0 100644 (file)
--- a/src/utils/dbi.c
+++ b/src/utils/dbi.c
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include "core/error.h"
#include "utils/dbi.h"
#include "utils/dbi.h"
+#include "utils/error.h"
#include <assert.h>
#include <assert.h>
{
sdb_dbi_options_t *options;
{
sdb_dbi_options_t *options;
- options = malloc(sizeof(options));
+ options = malloc(sizeof(*options));
if (! options)
return NULL;
if (! options)
return NULL;
if ((! client) || (! client->driver) || (! client->database))
return -1;
if ((! client) || (! client->driver) || (! client->database))
return -1;
- if (client->conn)
+ if (client->conn) {
dbi_conn_close(client->conn);
dbi_conn_close(client->conn);
+ client->conn = NULL;
+ }
driver = dbi_driver_open(client->driver);
if (! driver) {
driver = dbi_driver_open(client->driver);
if (! driver) {
sdb_error_log(SDB_LOG_ERR);
dbi_conn_close(client->conn);
sdb_error_log(SDB_LOG_ERR);
dbi_conn_close(client->conn);
+ client->conn = NULL;
return -1;
}
}
return -1;
}
}
sdb_log(SDB_LOG_ERR, "dbi: failed to set option 'dbname': %s",
sdb_dbi_strerror(client->conn));
dbi_conn_close(client->conn);
sdb_log(SDB_LOG_ERR, "dbi: failed to set option 'dbname': %s",
sdb_dbi_strerror(client->conn));
dbi_conn_close(client->conn);
+ client->conn = NULL;
return -1;
}
return -1;
}
sdb_log(SDB_LOG_ERR, "dbi: failed to connect to database '%s': %s",
client->database, sdb_dbi_strerror(client->conn));
dbi_conn_close(client->conn);
sdb_log(SDB_LOG_ERR, "dbi: failed to connect to database '%s': %s",
client->database, sdb_dbi_strerror(client->conn));
dbi_conn_close(client->conn);
+ client->conn = NULL;
return -1;
}
return 0;
return -1;
}
return 0;
if (client->conn)
dbi_conn_close(client->conn);
if (client->conn)
dbi_conn_close(client->conn);
+ client->conn = NULL;
if (client->options)
sdb_dbi_options_destroy(client->options);
if (client->options)
sdb_dbi_options_destroy(client->options);