Code

Merged branch 'master' of git://git.tokkee.org/sysdb.
[sysdb.git] / src / utils / dbi.c
index 5188058866ae4685cdddf88a46d653a73a0fe7ad..d9bd3691391ad80a0728a2f9ac88c03033627fa4 100644 (file)
@@ -25,8 +25,8 @@
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "utils/error.h"
 #include "utils/dbi.h"
+#include "utils/error.h"
 
 #include <assert.h>
 
@@ -284,8 +284,10 @@ sdb_dbi_client_connect(sdb_dbi_client_t *client)
        if ((! client) || (! client->driver) || (! client->database))
                return -1;
 
-       if (client->conn)
+       if (client->conn) {
                dbi_conn_close(client->conn);
+               client->conn = NULL;
+       }
 
        driver = dbi_driver_open(client->driver);
        if (! driver) {
@@ -298,6 +300,7 @@ sdb_dbi_client_connect(sdb_dbi_client_t *client)
                                driver = dbi_driver_list(driver)) {
                        sdb_error_append("\t- %s\n", dbi_driver_get_name(driver));
                }
+               sdb_error_chomp();
                sdb_error_log(SDB_LOG_ERR);
                return -1;
        }
@@ -327,9 +330,11 @@ sdb_dbi_client_connect(sdb_dbi_client_t *client)
                        for (opt = dbi_conn_get_option_list(client->conn, NULL); opt;
                                        opt = dbi_conn_get_option_list(client->conn, opt))
                                sdb_error_append("\t- %s\n", opt);
+                       sdb_error_chomp();
                        sdb_error_log(SDB_LOG_ERR);
 
                        dbi_conn_close(client->conn);
+                       client->conn = NULL;
                        return -1;
                }
        }
@@ -338,6 +343,7 @@ sdb_dbi_client_connect(sdb_dbi_client_t *client)
                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;
        }
 
@@ -345,6 +351,7 @@ sdb_dbi_client_connect(sdb_dbi_client_t *client)
                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;
@@ -465,6 +472,7 @@ sdb_dbi_client_destroy(sdb_dbi_client_t *client)
 
        if (client->conn)
                dbi_conn_close(client->conn);
+       client->conn = NULL;
 
        if (client->options)
                sdb_dbi_options_destroy(client->options);