diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2016-11-19 23:28:52 -0300 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2016-11-19 23:28:52 -0300 |
| commit | 25281ecb3198a543ddb18aab41b8a206512bdd0c (patch) | |
| tree | b70ec523854382497027aa4cd299eb50348ba552 /src/server/game/Handlers/PetitionsHandler.cpp | |
| parent | d2bf7237a38a29ff7a75aa1d137ec0b08610fa3c (diff) | |
Core/Guild: avoid data integrity problems wrapping delete+insert statements in a transaction
Diffstat (limited to 'src/server/game/Handlers/PetitionsHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/PetitionsHandler.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp index c0b5db65d90..a4d41bbff1f 100644 --- a/src/server/game/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Handlers/PetitionsHandler.cpp @@ -849,12 +849,18 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recvData) Guild::SendCommandResult(this, GUILD_COMMAND_CREATE, ERR_GUILD_COMMAND_SUCCESS, name); - // Add members from signatures - for (uint8 i = 0; i < signatures; ++i) { - Field* fields = result->Fetch(); - guild->AddMember(ObjectGuid(HighGuid::Player, fields[0].GetUInt32())); - result->NextRow(); + SQLTransaction trans = CharacterDatabase.BeginTransaction(); + + // Add members from signatures + for (uint8 i = 0; i < signatures; ++i) + { + Field* fields = result->Fetch(); + guild->AddMember(trans, ObjectGuid(HighGuid::Player, fields[0].GetUInt32())); + result->NextRow(); + } + + CharacterDatabase.CommitTransaction(trans); } } else |
