diff options
author | Tobias Brunner <tobias@strongswan.org> | 2013-10-10 10:58:40 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2013-10-11 15:29:10 +0200 |
commit | b283a6e9efd2ff16ec5b189435604b0d82d714cd (patch) | |
tree | 8b80b4c9249b2e1a51ac555a9e7c5f035524f55e /src/libstrongswan/plugins/mysql/mysql_database.c | |
parent | e745f5f69ff524cae7a2e34199c01f1dd1e4294e (diff) | |
download | strongswan-b283a6e9efd2ff16ec5b189435604b0d82d714cd.tar.bz2 strongswan-b283a6e9efd2ff16ec5b189435604b0d82d714cd.tar.xz |
database: Add support for serializable transactions
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", |