Comment 2 for bug 1795813

Revision history for this message
Andreas Hasenack (ahasenack) wrote : Re: backport fix for SIGSEGV when using mysql plugin

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);
+ }
 }

 /**