aboutsummaryrefslogtreecommitdiff
path: root/src/game/AuctionHouseHandler.cpp
diff options
context:
space:
mode:
authorclick <none@none>2010-04-12 11:03:31 +0200
committerclick <none@none>2010-04-12 11:03:31 +0200
commit8bbbf0bc86eba95dd4937c9f77e84e0514db5ad8 (patch)
tree4784fab7fdd2d62681b73a221e34f4240c1b3130 /src/game/AuctionHouseHandler.cpp
parentdea44971632f6a2a5b0f96b025f9f358d8ea8a2e (diff)
* Add some more transactioncontrol on auctionhouse actions, ensuring database consistency
--HG-- branch : trunk
Diffstat (limited to 'src/game/AuctionHouseHandler.cpp')
-rw-r--r--src/game/AuctionHouseHandler.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/game/AuctionHouseHandler.cpp b/src/game/AuctionHouseHandler.cpp
index efa4184b393..2a2308019fd 100644
--- a/src/game/AuctionHouseHandler.cpp
+++ b/src/game/AuctionHouseHandler.cpp
@@ -382,6 +382,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket & recv_data)
GetPlayer()->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID, price);
// after this update we should save player's money ...
+ CharacterDatabase.BeginTransaction();
CharacterDatabase.PExecute("UPDATE auctionhouse SET buyguid = '%u',lastbid = '%u' WHERE id = '%u'", auction->bidder, auction->bid, auction->Id);
SendAuctionCommandResult(auction->Id, AUCTION_PLACE_BID, AUCTION_OK, 0);
@@ -406,12 +407,13 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket & recv_data)
auctionmgr.SendAuctionWonMail(auction);
SendAuctionCommandResult(auction->Id, AUCTION_PLACE_BID, AUCTION_OK);
+
+ CharacterDatabase.BeginTransaction();
auction->DeleteFromDB();
uint32 item_template = auction->item_template;
auctionmgr.RemoveAItem(auction->item_guidlow);
auctionHouse->RemoveAuction(auction, item_template);
}
- CharacterDatabase.BeginTransaction();
pl->SaveInventoryAndGoldToDB();
CharacterDatabase.CommitTransaction();
}
@@ -481,14 +483,15 @@ void WorldSession::HandleAuctionRemoveItem(WorldPacket & recv_data)
//inform player, that auction is removed
SendAuctionCommandResult(auction->Id, AUCTION_CANCEL, AUCTION_OK);
+
// Now remove the auction
CharacterDatabase.BeginTransaction();
pl->SaveInventoryAndGoldToDB();
- CharacterDatabase.CommitTransaction();
auction->DeleteFromDB();
uint32 item_template = auction->item_template;
auctionmgr.RemoveAItem(auction->item_guidlow);
auctionHouse->RemoveAuction(auction, item_template);
+ CharacterDatabase.CommitTransaction();
}
//called when player lists his bids