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:
1 parent
88a8fba1c7
commit
0a6fbe8f7e
1 file changed
+6
-4
+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