pool: Destroy enumerator before deleting existing pool

The MySQL client doesn't like overlapping queries on the same
connection, so we make sure to destroy the enumerator used to check for
an existing pool before deleting it when --replace is used.
This commit is contained in:
Tobias Brunner
2017-11-08 16:40:14 +01:00
parent 88a8fba1c7
commit 0a6fbe8f7e
+6 -4
View File
@@ -60,20 +60,22 @@ static u_int create_pool(char *name, chunk_t start, chunk_t end, u_int timeout)
{
enumerator_t *e;
int pool;
bool exists;
e = db->query(db, "SELECT id FROM pools WHERE name = ?",
DB_TEXT, name, DB_UINT);
if (e && e->enumerate(e, &pool))
exists = e && e->enumerate(e, &pool);
DESTROY_IF(e);
if (exists)
{
if (replace_pool == FALSE)
if (!replace_pool)
{
fprintf(stderr, "pool '%s' exists.\n", name);
e->destroy(e);
exit(EXIT_FAILURE);
}
del(name);
}
DESTROY_IF(e);
if (db->execute(db, &pool,
"INSERT INTO pools (name, start, end, timeout) VALUES (?, ?, ?, ?)",
DB_TEXT, name, DB_BLOB, start, DB_BLOB, end,