diff options
Diffstat (limited to 'src/libstrongswan/plugins/mysql/mysql_database.c')
-rw-r--r-- | src/libstrongswan/plugins/mysql/mysql_database.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/libstrongswan/plugins/mysql/mysql_database.c b/src/libstrongswan/plugins/mysql/mysql_database.c index 7a612ff8b..373e9dc7c 100644 --- a/src/libstrongswan/plugins/mysql/mysql_database.c +++ b/src/libstrongswan/plugins/mysql/mysql_database.c @@ -652,7 +652,7 @@ METHOD(database_t, execute, int, } METHOD(database_t, transaction, bool, - private_mysql_database_t *this) + private_mysql_database_t *this, bool serializable) { transaction_t *trans = NULL; conn_t *conn; @@ -669,6 +669,17 @@ METHOD(database_t, transaction, bool, } /* these statements are not supported in prepared statements that are used * by the execute() method */ + if (serializable) + { + if (mysql_query(conn->mysql, + "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE") != 0) + { + DBG1(DBG_LIB, "starting transaction failed: %s", + mysql_error(conn->mysql)); + conn_release(this, conn); + return FALSE; + } + } if (mysql_query(conn->mysql, "START TRANSACTION") != 0) { DBG1(DBG_LIB, "starting transaction failed: %s", |