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:
+6
-4
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user