From cb5a943f10e581f6782614d29766b26ce850de4c Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sun, 9 Jan 2011 13:30:14 +0100 Subject: [PATCH 1/5] Core/DBLayer: CHAR_DEL_AUCTION should be defined as asynchronous. Fixes a crash caused by assertion failure. ("Could not fetch prepared statement 54 on database `characters`, connection type: asynchronous.") --- src/server/shared/Database/Implementation/CharacterDatabase.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index d1c9ae875d..af0420123c 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -288,7 +288,7 @@ static const PreparedStatementTable CharacterDatabasePreparedStatements[] = {CHAR_LOAD_AUCTION_ITEMS, "SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, itemguid, itemEntry FROM auctionhouse ah JOIN item_instance ii ON ah.itemguid = ii.guid", CONNECTION_SYNCH}, {CHAR_LOAD_AUCTIONS, "SELECT id, auctioneerguid, itemguid, itemEntry, itemowner, buyoutprice, time, buyguid, lastbid, startbid, deposit FROM auctionhouse ah INNER JOIN item_instance ii ON ii.guid = ah.itemguid", CONNECTION_SYNCH}, {CHAR_ADD_AUCTION, "INSERT INTO auctionhouse (id, auctioneerguid, itemguid, itemowner, buyoutprice, time, buyguid, lastbid, startbid, deposit) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC}, - {CHAR_DEL_AUCTION, "DELETE FROM auctionhouse WHERE id = ?", CONNECTION_SYNCH}, + {CHAR_DEL_AUCTION, "DELETE FROM auctionhouse WHERE id = ?", CONNECTION_ASYNC}, {CHAR_ADD_MAIL, "INSERT INTO mail(id, messageType, stationery, mailTemplateId, sender, receiver, subject, body, has_items, expire_time, deliver_time, money,cod, checked) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC}, {CHAR_DEL_MAIL, "DELETE FROM mail WHERE id = ?", CONNECTION_ASYNC}, {CHAR_ADD_MAIL_ITEM, "INSERT INTO mail_items(mail_id, item_guid, receiver) VALUES (?, ?, ?)", CONNECTION_ASYNC}, From 4ec6ec66c45fbdb25f3b6ae41ee46a25c83ab5bd Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sun, 9 Jan 2011 13:43:35 +0100 Subject: [PATCH 2/5] Core/SQL: Fix world_scripts_full.sql import --- sql/scripts/world_scripts_full.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index 10c751218e..a76b81da11 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -2052,7 +2052,7 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( -543, 'spell_mage_incanters_absorbtion_absorb'), ( -6143, 'spell_mage_incanters_absorbtion_absorb'), (-11426, 'spell_mage_incanters_absorbtion_absorb'), -( -1463, 'spell_mage_incanters_absorbtion_manashield') +( -1463, 'spell_mage_incanters_absorbtion_manashield'), ( 31687, 'spell_mage_summon_water_elemental'), ( 32826, 'spell_mage_polymorph_visual'), -- warlock From 45459bed23b78fc619475ee2177e826ae4494cd7 Mon Sep 17 00:00:00 2001 From: Derex Date: Sun, 9 Jan 2011 13:53:25 +0100 Subject: [PATCH 3/5] Core/Netcode: Fix file descriptor leak under linux platforms with ACE dev poll reactor. close #15 Signed-off-by: Machiavelli --- src/server/authserver/Server/RealmSocket.cpp | 1 + src/server/game/Server/WorldSocket.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/server/authserver/Server/RealmSocket.cpp b/src/server/authserver/Server/RealmSocket.cpp index 7d727a94b6..299dd45099 100755 --- a/src/server/authserver/Server/RealmSocket.cpp +++ b/src/server/authserver/Server/RealmSocket.cpp @@ -246,6 +246,7 @@ int RealmSocket::handle_close(ACE_HANDLE h, ACE_Reactor_Mask) if (session_) session_->OnClose(); + reactor()->remove_handler(this, ACE_Event_Handler::DONT_CALL | ACE_Event_Handler::ALL_EVENTS_MASK); return 0; } diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index eb6d0234fa..084eade755 100755 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -459,6 +459,7 @@ int WorldSocket::handle_close (ACE_HANDLE h, ACE_Reactor_Mask) m_Session = NULL; } + reactor()->remove_handler(this, ACE_Event_Handler::DONT_CALL | ACE_Event_Handler::ALL_EVENTS_MASK); return 0; } From 1aa294d3e90eac8d5f3b28f332411bec47f8e44c Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 9 Jan 2011 15:14:44 +0100 Subject: [PATCH 4/5] Core/Players: Fixed typo in updating soulbound trade times (check every second, not every 1000 seconds) --- src/server/game/Entities/Player/Player.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7ed20819e6..8d330143ae 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1305,7 +1305,8 @@ void Player::Update(uint32 p_time) if (now > m_Last_tick) UpdateItemDuration(uint32(now - m_Last_tick)); - if (now > m_Last_tick + IN_MILLISECONDS) + // check every second + if (now > m_Last_tick + 1) UpdateSoulboundTradeItems(); if (!m_timedquests.empty()) From 01d4080b4d786d7e824018a4915e05872b64f996 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sun, 9 Jan 2011 16:22:04 +0100 Subject: [PATCH 5/5] Core/Units: Send proper orientation in SMSG_MONSTER_MOVE_TRANSPORT Also get rid of the 100 constant in moveticks segment and use getMSTime() for consistency sake --- src/server/game/Entities/Unit/Unit.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 81b02334d6..bb3a1276fa 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -426,11 +426,11 @@ void Unit::SendMonsterMoveTransport(Unit *vehicleOwner) data << GetPositionX() - vehicleOwner->GetPositionX(); data << GetPositionY() - vehicleOwner->GetPositionY(); data << GetPositionZ() - vehicleOwner->GetPositionZ(); - data << uint32(100); // should be an increasing constant that indicates movement packet count + data << uint32(getMSTime()); // should be an increasing constant that indicates movement packet count data << uint8(SPLINETYPE_FACING_ANGLE); - data << GetTransOffsetO(); // facing angle? + data << GetOrientation(); // facing angle? data << uint32(SPLINEFLAG_TRANSPORT); - data << uint32(0); // move time + data << uint32(GetTransTime()); // move time data << uint32(1); // amount of waypoints data << GetTransOffsetX(); data << GetTransOffsetY();