diff options
Diffstat (limited to 'src/libstrongswan/plugins/mysql/mysql_database.c')
| -rw-r--r-- | src/libstrongswan/plugins/mysql/mysql_database.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/src/libstrongswan/plugins/mysql/mysql_database.c b/src/libstrongswan/plugins/mysql/mysql_database.c index d7e35d9fd..90f8185b0 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); +	}  }  /** | 
