diff options
author | JorTurFer <36899226+JorTurFer@users.noreply.github.com> | 2018-04-02 14:02:34 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2018-04-02 15:09:45 +0300 |
commit | 4dc28b409523810ed33907b77ec26f215a8660e8 (patch) | |
tree | b7fec8d44b86a9d47b90e1a9f12badfe79bc52dc | |
parent | f021d87913dd05de2a9e6493ef0793d8425467fa (diff) |
Update World.cpp
The command .ban character may insert the ban first, and update with the unban. This change fix it
-rw-r--r-- | src/server/game/World/World.cpp | 10 |
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(); |