aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJorTurFer <36899226+JorTurFer@users.noreply.github.com>2018-04-02 14:02:34 +0200
committerShauren <shauren.trinity@gmail.com>2018-04-02 15:09:45 +0300
commit4dc28b409523810ed33907b77ec26f215a8660e8 (patch)
treeb7fec8d44b86a9d47b90e1a9f12badfe79bc52dc /src
parentf021d87913dd05de2a9e6493ef0793d8425467fa (diff)
Update World.cpp
The command .ban character may insert the ban first, and update with the unban. This change fix it
Diffstat (limited to 'src')
-rw-r--r--src/server/game/World/World.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index da625cb5625..cd7d6cc3edd 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2787,19 +2787,21 @@ BanReturn World::BanCharacter(std::string const& name, std::string const& durati
}
else
guid = banned->GetGUID().GetCounter();
-
+ //Use transaction in order to ensure the order of the queries
+ SQLTransaction trans = CharacterDatabase.BeginTransaction();
// make sure there is only one active ban
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_BAN);
stmt->setUInt32(0, guid);
- CharacterDatabase.Execute(stmt);
+ trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_BAN);
stmt->setUInt32(0, guid);
stmt->setUInt32(1, duration_secs);
stmt->setString(2, author);
stmt->setString(3, reason);
- CharacterDatabase.Execute(stmt);
-
+ trans->Append(stmt);
+ CharacterDatabase.CommitTransaction(trans);
+
if (banned)
banned->GetSession()->KickPlayer();