From: Tobias Brunner Date: Mon, 6 Nov 2017 09:29:56 +0000 (+0100) Subject: pool: Destroy enumerator before deleting existing pool X-Git-Tag: 5.6.1rc1~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0a6fbe8f7eb577a56e18f98b24ce2e6bd3412386;p=thirdparty%2Fstrongswan.git 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. --- diff --git a/src/pool/pool.c b/src/pool/pool.c index c0d855b73d..b755365ec0 100644 --- a/src/pool/pool.c +++ b/src/pool/pool.c @@ -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,