DDuarte
2ea31027e5
Core: Backport 6.x realm changes
...
Make acessible all the info about current realm (e.g name) anywhere, not only realm id
Reduce the number of differences between the two branches
Original changes by Shauren
Partial port of bacc90b6baa34e6a194c93e5a7860d4041f08af7 and 63def8aa3291d0a6e5f83b289ad12c4c8a3cebd9
2016-03-06 19:46:59 +00:00
Shauren
b2e03a7448
Core/Networking: Rewrite networking threading model
...
Each network thread has its own io_service - this means that all operations on a given socket except queueing packets run from a single thread, removing the need for locking
Sending packets now writes to a lockfree intermediate queue directly, encryption is applied in network thread if it was required at the time of sending the packet
(cherry picked from commit 97a79af4701621ec04b88c8b548dbc35d120e99e)
2016-02-20 13:08:03 +01:00
Rushor
923a368ac7
Update copyright note for 2016
2016-01-01 12:02:33 +01:00
Shauren
60da7c6552
Core/Networking: Fixed possible crashes happening if async query retrieving account data takes too long
...
Closes #14944
(cherry picked from commit 590c6e399d778db459fc8417322c80549081440a)
2015-10-31 16:04:14 +01:00
Shauren
97fe228334
Core/Threading: Fixed possible data races after making auth queries async by moving their processing to boost::asio::io_service::run threads
...
(cherry picked from commit f6bc87fe5df8b60ca0bf3a35f61305fd780a7e7d)
2015-10-31 15:56:02 +01:00
Shauren
b95648ae27
Core/Threading: Significantly reduced the severity of possible data race during player login
...
* This commit changes a data race on a pointer value to data race on integers (guid)
(cherry picked from commit dbe20510569e6bd4a26892be84289b5864350ea6)
2015-10-31 15:41:32 +01:00
Shauren
517a30d7c1
Core/DBLayer: Sprinkle some async magic on worldserver auth/session load process
...
(cherry picked from commit 0e49eefe85790ac365c90202a2e22ce6b266ac31)
2015-10-31 15:36:48 +01:00
Vincent-Michael
d2d4bc2668
Core: Header cleanup in game/*/*.cpp
...
(cherry picked from commit 2e586bc520e7eda2387e850c3c0049e6daa880de)
Conflicts:
src/server/game/Battlegrounds/Battleground.cpp
src/server/game/Battlegrounds/BattlegroundMgr.cpp
src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
src/server/game/Chat/Chat.cpp
src/server/game/Combat/ThreatManager.cpp
src/server/game/DataStores/DB2Stores.cpp
src/server/game/DataStores/DBCStores.cpp
src/server/game/Entities/Creature/Creature.cpp
src/server/game/Entities/Creature/GossipDef.cpp
src/server/game/Entities/Object/Object.cpp
src/server/game/Entities/Object/ObjectGuid.cpp
src/server/game/Entities/Object/Updates/UpdateData.cpp
src/server/game/Entities/Pet/Pet.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Globals/ObjectAccessor.cpp
src/server/game/Handlers/BankHandler.cpp
src/server/game/Handlers/CombatHandler.cpp
src/server/game/Handlers/GroupHandler.cpp
src/server/game/Handlers/GuildHandler.cpp
src/server/game/Handlers/ItemHandler.cpp
src/server/game/Handlers/MiscHandler.cpp
src/server/game/Handlers/MovementHandler.cpp
src/server/game/Handlers/PetitionsHandler.cpp
src/server/game/Handlers/QueryHandler.cpp
src/server/game/Handlers/SpellHandler.cpp
src/server/game/Handlers/TokenHandler.cpp
src/server/game/Handlers/VoiceChatHandler.cpp
src/server/game/Maps/Map.cpp
src/server/game/Movement/Spline/MoveSplineInit.cpp
src/server/game/Quests/QuestDef.cpp
src/server/game/Server/Packet.cpp
src/server/game/Server/Packets/SpellPackets.cpp
src/server/game/Server/WorldSession.cpp
src/server/game/Server/WorldSocket.cpp
src/server/game/Spells/Auras/SpellAuraEffects.cpp
src/server/game/Spells/Spell.cpp
src/server/game/Spells/SpellEffects.cpp
src/server/game/Spells/SpellScript.cpp
src/server/game/Warden/Warden.cpp
src/server/game/Warden/WardenWin.cpp
src/server/game/Weather/WeatherMgr.cpp
2015-07-25 21:53:30 +01:00
Naios
45058990e2
Core/Utilities: Remove global using of std::chrono namespace.
...
* never use "using namespace" in header files!
(cherry picked from commit 6bf10c2b83063147737aee68d3b40a6d67e49d53)
2015-07-22 01:59:57 +02:00
Shauren
548aa119ac
Core/Networking: Fixed unsafe access to _worldSession member in WorldSocket
...
(cherry picked from commit bed88e0dd475af5b73cea03821f7fb7cb9ddce9d)
Core/Networking: Fixed deadlock in HandlePing if the client is about to be kicked for overspeed pings
(cherry picked from commit 3da0f7e40920b652d2222fa88dbb4b516d24725d)
Core/Networking: Cleanup CloseSocket calls from read failures in WorldSocket
(cherry picked from commit 18343a7309fbf53a3509749c0a5ca1f8ea273c57)
Conflicts:
src/server/game/Server/WorldSocket.cpp
Ref #14474
2015-04-04 23:07:41 +01:00
click
132d4ede37
Core: More INFO -> DEBUG changes (WorldSession/WorldSocket)
2015-03-08 05:51:07 +01:00
jackpoz
5e7d4a44e0
Core/PacketLog: Avoid unneeded calls with disabled packet logs
...
Avoid calling GetOpcodeNameForLogging() when packet logs are disabled.
2015-03-03 23:09:42 +01:00
Vincent-Michael
f3e86d3e68
Update copyright note for 2015
...
Happy new year
Conflicts:
src/server/bnetserver/Authentication/AuthCodes.h
src/server/bnetserver/Authentication/BattlenetPacketCrypt.cpp
src/server/bnetserver/Authentication/BattlenetPacketCrypt.h
src/server/bnetserver/Packets/AchievementPackets.h
src/server/bnetserver/Packets/AuthenticationPackets.cpp
src/server/bnetserver/Packets/AuthenticationPackets.h
src/server/bnetserver/Packets/BitStream.cpp
src/server/bnetserver/Packets/BitStream.h
src/server/bnetserver/Packets/CachePackets.cpp
src/server/bnetserver/Packets/CachePackets.h
src/server/bnetserver/Packets/ChatPackets.h
src/server/bnetserver/Packets/ConnectionPackets.cpp
src/server/bnetserver/Packets/ConnectionPackets.h
src/server/bnetserver/Packets/FriendsPackets.cpp
src/server/bnetserver/Packets/FriendsPackets.h
src/server/bnetserver/Packets/PacketManager.cpp
src/server/bnetserver/Packets/PacketManager.h
src/server/bnetserver/Packets/Packets.h
src/server/bnetserver/Packets/PacketsBase.cpp
src/server/bnetserver/Packets/PacketsBase.h
src/server/bnetserver/Packets/PresencePackets.cpp
src/server/bnetserver/Packets/PresencePackets.h
src/server/bnetserver/Packets/ProfilePackets.h
src/server/bnetserver/Packets/SupportPackets.h
src/server/bnetserver/Packets/WoWRealmPackets.cpp
src/server/bnetserver/Packets/WoWRealmPackets.h
src/server/bnetserver/Realms/RealmList.cpp
src/server/bnetserver/Realms/WorldListener.cpp
src/server/bnetserver/Realms/WorldListener.h
src/server/bnetserver/Server/ComponentManager.cpp
src/server/bnetserver/Server/ComponentManager.h
src/server/bnetserver/Server/ModuleManager.cpp
src/server/bnetserver/Server/ModuleManager.h
src/server/bnetserver/Server/Session.cpp
src/server/bnetserver/Server/Session.h
src/server/bnetserver/Server/SessionManager.cpp
src/server/bnetserver/Server/SessionManager.h
src/server/game/Accounts/BattlenetAccountMgr.cpp
src/server/game/Accounts/BattlenetAccountMgr.h
src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
src/server/game/Battlegrounds/Zones/BattlegroundBFG.h
src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
src/server/game/Battlegrounds/Zones/BattlegroundTP.h
src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
src/server/game/Entities/AreaTrigger/AreaTrigger.h
src/server/game/Entities/Item/ItemTemplate.cpp
src/server/game/Guilds/GuildFinderMgr.cpp
src/server/game/Guilds/GuildFinderMgr.h
src/server/game/Handlers/GuildFinderHandler.cpp
src/server/game/Handlers/VoidStorageHandler.cpp
src/server/game/Movement/MovementStructures.cpp
src/server/game/Movement/MovementStructures.h
src/server/game/Movement/PathGenerator.cpp
src/server/game/Server/BattlenetServerManager.cpp
src/server/game/Server/BattlenetServerManager.h
src/server/game/Server/Packet.cpp
src/server/game/Server/Packet.h
src/server/game/Server/Packets/AchievementPackets.cpp
src/server/game/Server/Packets/AchievementPackets.h
src/server/game/Server/Packets/AuctionHousePackets.cpp
src/server/game/Server/Packets/AuctionHousePackets.h
src/server/game/Server/Packets/AuthenticationPackets.cpp
src/server/game/Server/Packets/AuthenticationPackets.h
src/server/game/Server/Packets/BattlegroundPackets.cpp
src/server/game/Server/Packets/BattlegroundPackets.h
src/server/game/Server/Packets/ChannelPackets.cpp
src/server/game/Server/Packets/ChannelPackets.h
src/server/game/Server/Packets/CharacterPackets.cpp
src/server/game/Server/Packets/CharacterPackets.h
src/server/game/Server/Packets/ChatPackets.cpp
src/server/game/Server/Packets/ChatPackets.h
src/server/game/Server/Packets/ClientConfigPackets.cpp
src/server/game/Server/Packets/ClientConfigPackets.h
src/server/game/Server/Packets/CombatLogPackets.cpp
src/server/game/Server/Packets/CombatLogPackets.h
src/server/game/Server/Packets/CombatPackets.cpp
src/server/game/Server/Packets/CombatPackets.h
src/server/game/Server/Packets/EquipmentSetPackets.cpp
src/server/game/Server/Packets/EquipmentSetPackets.h
src/server/game/Server/Packets/GameObjectPackets.cpp
src/server/game/Server/Packets/GameObjectPackets.h
src/server/game/Server/Packets/GuildPackets.cpp
src/server/game/Server/Packets/GuildPackets.h
src/server/game/Server/Packets/ItemPackets.cpp
src/server/game/Server/Packets/ItemPackets.h
src/server/game/Server/Packets/LootPackets.h
src/server/game/Server/Packets/MiscPackets.cpp
src/server/game/Server/Packets/MiscPackets.h
src/server/game/Server/Packets/MovementPackets.cpp
src/server/game/Server/Packets/MovementPackets.h
src/server/game/Server/Packets/NPCPackets.cpp
src/server/game/Server/Packets/NPCPackets.h
src/server/game/Server/Packets/QueryPackets.cpp
src/server/game/Server/Packets/QueryPackets.h
src/server/game/Server/Packets/QuestPackets.cpp
src/server/game/Server/Packets/QuestPackets.h
src/server/game/Server/Packets/ReputationPackets.cpp
src/server/game/Server/Packets/ReputationPackets.h
src/server/game/Server/Packets/SpellPackets.cpp
src/server/game/Server/Packets/SpellPackets.h
src/server/game/Server/Packets/SystemPackets.cpp
src/server/game/Server/Packets/SystemPackets.h
src/server/game/Server/Packets/TalentPackets.cpp
src/server/game/Server/Packets/TalentPackets.h
src/server/game/Server/Packets/TradePackets.h
src/server/game/Server/Packets/WorldStatePackets.cpp
src/server/game/Server/Packets/WorldStatePackets.h
src/server/game/Server/WorldSocket.cpp
src/server/ipc/CMakeLists.txt
src/server/ipc/Commands.cpp
src/server/ipc/Commands.h
src/server/ipc/ZMQTask.cpp
src/server/ipc/ZMQTask.h
src/server/ipc/ZmqContext.cpp
src/server/ipc/ZmqContext.h
src/server/ipc/ZmqListener.cpp
src/server/ipc/ZmqListener.h
src/server/ipc/ZmqMux.cpp
src/server/ipc/ZmqMux.h
src/server/ipc/ZmqWorker.cpp
src/server/ipc/ZmqWorker.h
src/server/scripts/Commands/cs_battlenet_account.cpp
src/server/scripts/Commands/cs_mmaps.cpp
src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp
src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp
src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp
src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp
src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_daakara.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp
src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
src/server/scripts/EasternKingdoms/ZulAman/zulaman.h
src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_kilnara.cpp
src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
src/server/scripts/EasternKingdoms/zone_burning_steppes.cpp
src/server/scripts/EasternKingdoms/zone_ironforge.cpp
src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp
src/server/scripts/Kalimdor/Firelands/firelands.h
src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h
src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp
src/server/scripts/Kalimdor/zone_azshara.cpp
src/server/scripts/Kalimdor/zone_darkshore.cpp
src/server/scripts/Kalimdor/zone_felwood.cpp
src/server/scripts/Kalimdor/zone_moonglade.cpp
src/server/scripts/Kalimdor/zone_orgrimmar.cpp
src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp
src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp
src/server/scripts/Maelstrom/Stonecore/boss_ozruk.cpp
src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp
src/server/scripts/Maelstrom/Stonecore/instance_stonecore.cpp
src/server/scripts/Maelstrom/Stonecore/stonecore.cpp
src/server/scripts/Maelstrom/Stonecore/stonecore.h
src/server/shared/Cryptography/Authentication/AuthCrypt.h
src/server/shared/Cryptography/Authentication/PacketCrypt.cpp
src/server/shared/Cryptography/Authentication/WorldPacketCrypt.cpp
src/server/shared/Cryptography/HmacHash.cpp
src/server/shared/Cryptography/SHA256.cpp
src/server/shared/Cryptography/SHA256.h
src/server/shared/Database/Implementation/HotfixDatabase.cpp
src/server/shared/Database/Implementation/HotfixDatabase.h
src/server/shared/Realm/Realm.cpp
src/server/shared/Realm/Realm.h
src/tools/connection_patcher/CMakeLists.txt
src/tools/connection_patcher/Constants/BinaryTypes.hpp
src/tools/connection_patcher/Helper.cpp
src/tools/connection_patcher/Helper.hpp
src/tools/connection_patcher/Patcher.cpp
src/tools/connection_patcher/Patcher.hpp
src/tools/connection_patcher/Patches/Common.hpp
src/tools/connection_patcher/Patches/Mac.hpp
src/tools/connection_patcher/Patches/Windows.hpp
src/tools/connection_patcher/Patterns/Common.hpp
src/tools/connection_patcher/Patterns/Mac.hpp
src/tools/connection_patcher/Patterns/Windows.hpp
src/tools/connection_patcher/Program.cpp
src/tools/map_extractor/loadlib/DBFilesClientList.h
2015-01-01 00:32:50 +01:00
DDuarte
cefcde9ba9
Core/Misc: Multiple static analysis issues fixed (small optimizations and clear code)
2014-09-19 03:30:02 +01:00
Shauren
e57a63939e
Core/NetworkIO: Fixed queued packets not being properly sent causing players to be stuck during loading
...
Closes #13120
2014-09-17 23:06:34 +02:00
Shauren
b3f7210f4d
Core/WorldSocket: Refactored client packet header check
2014-09-12 20:25:13 +02:00
Shauren
e0ce4528c5
Core/NetworkIO: Use reactor style sending on linux to reduce locking overhead
2014-09-09 19:19:25 +02:00
Shauren
abfd29ab61
Core/WorldSession: Added research notes about CMSG_AUTH_SESSION values and reordered checks during login to always initialize encryption first to make sure the client can read failure packet
2014-08-21 18:18:13 +02:00
Shauren
36e32cc242
Core/NetworkIO: Restored opcode and size checks lost during ace->boost changes, fixes crashes caused by players sending invalid opcodes/too big packets
2014-08-19 19:32:06 +02:00
Shauren
c741d2682a
Core/NetworkIO: Prevent queueing more async operations when socket is already closed
2014-08-11 20:43:07 +02:00
leak
1a27ce1267
Core/NetworkIO: Restore networking related scripting hooks
...
Closes #12607
2014-08-11 17:40:43 +02:00
Shauren
df11916ad5
Core/NetworkIO: Allow receiving packets bigger than buffer size and properly handle situations where not entire packet was read in one go
...
Core/Authserver: Restored authenticator functionality
2014-08-10 11:00:27 +02:00
DDuarte
43f868e55c
Core/PacketLog: Save session ip and port information in saved packets
...
This data is put into the "optional data" part of each packet of the PKT 3.1 format
It will be used with WPP to debug some networking issues
2014-07-30 03:45:03 +01:00
joschiwald
04bb78f6c3
Scripts/OutdoorPvP: replaced some chat texts with proper defense messages
2014-07-29 23:45:34 +02:00
Shauren
7a888d03bd
Core/Network: Fixed packets being properly received only by the first player when broadcasted to everyone
...
Closes #12675
2014-07-28 16:37:42 +02:00
Shauren
6f272ea5b7
Core/Network: Optimized packet sending by removing unneccessary memory copying
2014-07-27 17:46:46 +02:00
Shauren
26715795b4
Fixed gcc build
2014-07-27 01:26:03 +02:00
Shauren
c1b1ba44ba
Core/Network: Refactored socket code, moved common operations to base Socket class
2014-07-26 23:26:01 +02:00
DDuarte
dcfa3bfa90
Core/Network: Fix build
2014-07-25 19:49:43 +01:00
DDuarte
4f1d247dfb
Core/Network: Fix some possible exceptions on socket.close()
...
Ref #12634
2014-07-25 18:06:43 +01:00
DDuarte
0b75e38755
Core/Shared: Change rand32 to return uin32 instead of int32
...
Fixes a crash that happened when rand32 returned negative values.
Also updated some related comments that were outdated since we changed to SFMT.
Closes #12638
2014-07-25 15:00:40 +01:00
Shauren
f1a41eabae
Core/NetworkIO: Fixed boost::asio::async_write usage - packets will now be sent properly
2014-07-24 17:09:45 +02:00
leak
87db1ae44f
Replaced try/catch by non-throwing socket.close()
2014-07-20 14:39:35 +02:00
leak
b153e1a47f
Fix terminate() being called on kicking a player (closing sockets twice is bad)
...
Also, Boost, why does your is_open() suck..
2014-07-19 21:59:17 +02:00
Shauren
57cf08f86e
Core/Logging: Changed format of packet log file from .bin to .pkt and restored packet logging - PacketLogFile extension must now be .pkt to allow WowPacketParser to use it
2014-07-19 13:30:51 +02:00
Subv
f6962f9c68
Fixed some compiler warnings
2014-07-13 16:40:31 -05:00
Subv
128217c4c4
Prevent the WorldSocket from being deleted when there's still an async write operation going on.
2014-07-10 16:01:11 -05:00
Subv
e84ba172a7
Fixed a GCC internal error when compiling AsyncAcceptor
2014-07-10 13:36:54 -05:00
leak
a738cd96dc
Renamed WorldTcpSession back to WorldSocket
2014-07-07 22:03:41 +02:00
leak
7befb26625
Some groundwork for replacing the ACE based WorldSocket handling
2014-07-06 01:26:29 +02:00
Ascathor
6949735098
Core/Misc:
...
* Fix some codestyle, fix some typos
* Change CMakeLists for: Custom (can be uncommented), Events, World
** Custom is theoretically unchanged. You can, however, uncomment the glob_recurse that initializes every file within. This might be easier for beginners.
* Introducing the IP Based Action Log System:
** On several different actions, e.g. Login, Character Login, etc., a new entry is added
** Can be logged on and off in worldserver config
*** Disabled by default to prevent increased log db size for unknowing users.
* Add a new row to account table called 'last_attempt_ip'
** Lists the last ip trying to connect to the account
* Add a new type of HookScripts: AccountScript
** Includes: OnAccountLogin, OnFailedAccountLogin, OnEmailChange, OnFailedChange, OnPasswordChange, OnFailedPasswordChange
* Added new Hook to PlayerScripts: OnFailedPlayerDelete
* Added new variables to PlayerScripts: OnPlayerDelete
2014-06-13 16:25:11 +02:00
Vincent_Michael
20004050bc
Update copyright note for 2014.
...
Happy new year.
2014-01-01 00:07:53 +01:00
Spp
94e2b9332a
Core/Logging: Remove LOG_FILTER_XXX defines with it's value (remember logger names are case-sensitive)
2013-11-08 10:50:51 +01:00
Spp
cfaea769bc
Core/RBAC: Move RBAC code to namespace rbac
2013-09-27 13:35:45 +02:00
jackpoz
2cca3982d4
Core/Movement: Port Ascent r1637 http://sourceforge.net/p/ascentemubackup/code/1637/ to TrinityCore
...
Port some movement packet fixes, taking into account client/server connection lag.
Credits to original author, check http://sourceforge.net/p/ascentemubackup/code/1637/ for more details.
MOVEMENT_PACKET_TIME_DELAY default value is currently set to 0, feel free to set it to different values and report feedback.
2013-09-26 20:09:50 +02:00
jackpoz
f23b5fb96d
Core/Socket: Fix race condition in WorldSocket
...
ReactorRunnable::svc() checks the status of WorldSockets while WorldRunnable::run() updates them, causing a race condition.
Helgrind log:
Possible data race during write of size 8 at 0x49961810 by thread #9
Locks held: 1, at address 0x4367A620
at 0x51781F7: ACE_Message_Block::copy(char const*, unsigned long) (Message_Block.inl:372)
by 0x15D048F: WorldSocket::SendPacket(WorldPacket const&) (WorldSocket.cpp:180)
by 0x141C45E: WorldSession::SendPacket(WorldPacket const*) (WorldSession.cpp:223)
by 0x15C49C4: WorldSession::SendAuthResponse(unsigned char, bool, unsigned int) (AuthHandler.cpp:37)
by 0x14DA71C: World::AddSession_(WorldSession*) (World.cpp:278)
by 0x14E601E: World::UpdateSessions(unsigned int) (World.cpp:2617)
by 0x14E3E67: World::Update(unsigned int) (World.cpp:1986)
by 0x100EAFA: WorldRunnable::run() (WorldRunnable.cpp:60)
by 0x163A626: ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:186)
by 0x518F555: ACE_OS_Thread_Adapter::invoke() (OS_Thread_Adapter.cpp:103)
by 0x4C2B5AD: mythread_wrapper (hg_intercepts.c:219)
by 0x61DAB4F: start_thread (pthread_create.c:304)
This conflicts with a previous read of size 8 by thread #14
Locks held: none
at 0x1008414: ACE_Message_Block::length() const (Message_Block.inl:131)
by 0x15D1207: WorldSocket::Update() (WorldSocket.cpp:448)
by 0x1427CA3: ReactorRunnable::svc() (WorldSocketMgr.cpp:177)
by 0x51CBB16: ACE_Task_Base::svc_run(void*) (Task.cpp:271)
by 0x51CD3BC: ACE_Thread_Adapter::invoke_i() (Thread_Adapter.cpp:161)
by 0x51CD4D4: ACE_Thread_Adapter::invoke() (Thread_Adapter.cpp:96)
by 0x4C2B5AD: mythread_wrapper (hg_intercepts.c:219)
by 0x61DAB4F: start_thread (pthread_create.c:304)
Address 0x49961810 is 16 bytes inside a block of size 80 alloc'd
at 0x4C286BB: operator new(unsigned long, std::nothrow_t const&) (vg_replace_malloc.c:316)
by 0x15D0818: WorldSocket::open(void*) (WorldSocket.cpp:237)
by 0x1429560: ACE_Acceptor<WorldSocket, ACE_SOCK_Acceptor>::activate_svc_handler(WorldSocket*) (Acceptor.cpp:347)
by 0x142916D: ACE_Acceptor<WorldSocket, ACE_SOCK_Acceptor>::handle_input(int) (Acceptor.cpp:429)
by 0x515F48D: ACE_Dev_Poll_Reactor::dispatch_io_event(ACE_Dev_Poll_Reactor::Token_Guard&) (Dev_Poll_Reactor.inl:86)
by 0x5161653: ACE_Dev_Poll_Reactor::handle_events(ACE_Time_Value*) (Dev_Poll_Reactor.cpp:1015)
by 0x51ACCFC: ACE_Reactor::run_reactor_event_loop(ACE_Time_Value&, int (*)(ACE_Reactor*)) (Reactor.cpp:267)
by 0x1427C57: ReactorRunnable::svc() (WorldSocketMgr.cpp:170)
by 0x51CBB16: ACE_Task_Base::svc_run(void*) (Task.cpp:271)
by 0x51CD3BC: ACE_Thread_Adapter::invoke_i() (Thread_Adapter.cpp:161)
by 0x51CD4D4: ACE_Thread_Adapter::invoke() (Thread_Adapter.cpp:96)
by 0x4C2B5AD: mythread_wrapper (hg_intercepts.c:219)
2013-09-01 21:32:34 +02:00
QAston
2a3370929d
Fix BigNumber::AsByteArray function by returning Auto_Ptr.
...
Remove mutex from BigNumber class - it didn't do what it was advertised to do - consider using the "locked" array outside of the function in which it was "locked".
2013-08-18 17:44:03 +02:00
Spp
d1677b2db0
Core/Logging: Performance-related tweaks to logging system
...
All sLog->out* functions (except outCommand atm) are replaced with TC_LOG_* macros.
Memleak fix
2013-05-13 15:07:36 +02:00
Spp
e99dd15915
Core/RBAC: Create new permission 'Skip over-speed ping check'
2013-02-25 15:48:18 +01:00
Nay
42e660e2a2
Core/Sockets: Always try to send MSG_NOSIGNAL in peer().send()
...
Fixes RASocket::authenticate crash
"MSG_NOSIGNAL:
If you send() to a remote host which is no longer recv()ing, you'll typically get the signal SIGPIPE. Adding this flag prevents that signal from being raised."
Closes #5040
Thanks to @derex for the hint
2013-02-11 02:59:37 +00:00