Via code inspection, it looks like this affects cosmic as well:
/** * Release a mysql connection */ 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); }
The diff that was committed is: --- 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); + } }
/**
Via code inspection, it looks like this affects cosmic as well:
/** private_ mysql_database_ t *this, conn_t *conn) >mutex- >lock(this- >mutex) ; >mutex- >unlock( this->mutex) ;
* Release a mysql connection
*/
static void conn_release(
{
this-
conn->in_use = FALSE;
this-
}
The diff that was committed is: swan/plugins/ mysql/mysql_ database. c swan/plugins/ mysql/mysql_ database. c private_ mysql_database_ t *this, conn_t *conn) >lock(this- >mutex) ; >unlock( this->mutex) ; >transaction- >get(this- >transaction) ) >lock(this- >mutex) ; >unlock( this->mutex) ;
--- a/src/libstrong
+++ b/src/libstrong
@@ -131,9 +131,13 @@ typedef struct {
*/
static void conn_release(
{
- this->mutex-
- conn->in_use = FALSE;
- this->mutex-
+ /* do not release the connection while transactions are using it */
+ if (!this-
+ {
+ this->mutex-
+ conn->in_use = FALSE;
+ this->mutex-
+ }
}
/**