From: Tobias Brunner Date: Wed, 3 Oct 2018 07:34:02 +0000 (+0200) Subject: mysql: Don't release the connection if transactions are still using it X-Git-Tag: 5.7.2dr1~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a61b1a6ee480ee12c3d91a303f918257d4966f13;p=thirdparty%2Fstrongswan.git mysql: Don't release the connection if transactions are still using it Fixes #2779. --- diff --git a/src/libstrongswan/plugins/mysql/mysql_database.c b/src/libstrongswan/plugins/mysql/mysql_database.c index d7e35d9fd3..90f8185b02 100644 --- a/src/libstrongswan/plugins/mysql/mysql_database.c +++ b/src/libstrongswan/plugins/mysql/mysql_database.c @@ -131,9 +131,13 @@ typedef struct { */ static void conn_release(private_mysql_database_t *this, conn_t *conn) { - this->mutex->lock(this->mutex); - conn->in_use = FALSE; - this->mutex->unlock(this->mutex); + /* do not release the connection while transactions are using it */ + if (!this->transaction->get(this->transaction)) + { + this->mutex->lock(this->mutex); + conn->in_use = FALSE; + this->mutex->unlock(this->mutex); + } } /**