Commit Graph

231 Commits

Author SHA1 Message Date
Shauren
0e49eefe85 Core/DBLayer: Sprinkle some async magic on worldserver auth/session load process
* Implemented base for loading account wide data
2015-06-20 00:59:31 +02:00
Shauren
07260316ba Core/NetworkIO: Fixed packet compression
Closes #14401
2015-06-13 00:16:06 +02:00
Naios
800d5d8939 Core/Misc: Replace tc's optional with boost::optional.
* benefits from empty optimization (objects are only constructed if needed).
* supports r-value references (move semantics) (boost >= 1.56.0).
* preparation for c++14/17's std::optional and std::none_t.
* add move constructor to CompactArray.
2015-04-26 23:45:52 +02:00
Shauren
59e9bcf0bf Core/Socket: Removed unused synchronous read method 2015-04-24 00:10:04 +02:00
Shauren
bfca8246d8 Core/Socket: Fixed race conditions with instance socket
Helgrind logs:
==41785== Possible data race during write of size 8 at 0x6D80D590 by thread #4
==41785== Locks held: none
==41785==    at 0x19603A2: void std::swap<std::__future_base::_State_baseV2*>(std::__future_base::_State_baseV2*&, std::__future_base::_State_baseV2*&) (move.h:177)
==41785==    by 0x195FD7C: std::__shared_ptr<std::__future_base::_State_baseV2, (__gnu_cxx::_Lock_policy)2>::swap(std::__shared_ptr<std::__future_base::_State_baseV2, (__gnu_cxx::_Lock_policy)2>&) (shared_ptr_base.h:1069)
==41785==    by 0x1FC5B84: std::__basic_future<SQLQueryHolder*>::_M_swap(std::__basic_future<SQLQueryHolder*>&) (future:629)
==41785==    by 0x1FC5155: std::future<SQLQueryHolder*>::operator=(std::future<SQLQueryHolder*>&&) (future:691)
==41785==    by 0x1FB94C6: WorldSession::HandleContinuePlayerLogin() (CharacterHandler.cpp:832)
==41785==    by 0x1ABD31A: WorldSocket::HandleAuthContinuedSession(WorldPackets::Auth::AuthContinuedSession&) (WorldSocket.cpp:742)
==41785==    by 0x1AB8322: WorldSocket::ReadDataHandler() (WorldSocket.cpp:261)
==41785==    by 0x1AB77D1: WorldSocket::ReadHandler() (WorldSocket.cpp:157)
==41785==    by 0x1AC068A: Socket<WorldSocket>::ReadHandlerInternal(boost::system::error_code, unsigned long) (Socket.h:201)
==41785==    by 0x1AC39ED: void std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)>::_M_call<std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&>(std::shared_ptr<WorldSocket>&, void const volatile*, boost::system::error_code const&, unsigned long const&) const (in /usr/local/bin/worldserver)
==41785==    by 0x1AC393F: void std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)>::operator()<std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&, void>(std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&) const (functional:578)
==41785==    by 0x1AC370F: void std::_Bind<std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)> (std::shared_ptr<WorldSocket>, std::_Placeholder<1>, std::_Placeholder<2>)>::__call<void, boost::system::error_code const&, unsigned long const&, 0ul, 1ul, 2ul>(std::tuple<boost::system::error_code const&, unsigned long const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:1264)
==41785==
==41785== This conflicts with a previous read of size 8 by thread #1
==41785== Locks held: none
==41785==    at 0x144BF6A: std::__shared_ptr<std::__future_base::_State_baseV2, (__gnu_cxx::_Lock_policy)2>::operator bool() const (shared_ptr_base.h:1056)
==41785==    by 0x1AAF7BD: std::__basic_future<SQLQueryHolder*>::valid() const (future:590)
==41785==    by 0x1AAA04C: WorldSession::ProcessQueryCallbacks() (WorldSession.cpp:1006)
==41785==    by 0x1AA5167: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:452)
==41785==    by 0x1D2D667: World::UpdateSessions(unsigned int) (World.cpp:2793)
==41785==    by 0x1D2A8C6: World::Update(unsigned int) (World.cpp:2159)
==41785==    by 0x145B823: WorldUpdateLoop() (Main.cpp:397)
==41785==    by 0x145957F: main (Main.cpp:255)

==41785== Possible data race during read of size 8 at 0x6D80D638 by thread #1
==41785== Locks held: none
==41785==    at 0x1A5E914: std::__shared_ptr<WorldSocket, (__gnu_cxx::_Lock_policy)2>::operator bool() const (shared_ptr_base.h:1056)
==41785==    by 0x1AA52A9: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:468)
==41785==    by 0x1D2D667: World::UpdateSessions(unsigned int) (World.cpp:2793)
==41785==    by 0x1D2A8C6: World::Update(unsigned int) (World.cpp:2159)
==41785==    by 0x145B823: WorldUpdateLoop() (Main.cpp:397)
==41785==    by 0x145957F: main (Main.cpp:255)
==41785==
==41785== This conflicts with a previous write of size 8 by thread #4
==41785== Locks held: none
==41785==    at 0x1AAD12D: std::__shared_ptr<WorldSocket, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<WorldSocket, (__gnu_cxx::_Lock_policy)2> const&) (shared_ptr_base.h:860)
==41785==    by 0x1AAD174: std::shared_ptr<WorldSocket>::operator=(std::shared_ptr<WorldSocket> const&) (shared_ptr.h:93)
==41785==    by 0x1ABF0B5: WorldSession::AddInstanceConnection(std::shared_ptr<WorldSocket>) (WorldSession.h:684)
==41785==    by 0x1ABD2F8: WorldSocket::HandleAuthContinuedSession(WorldPackets::Auth::AuthContinuedSession&) (WorldSocket.cpp:741)
==41785==    by 0x1AB8322: WorldSocket::ReadDataHandler() (WorldSocket.cpp:261)
==41785==    by 0x1AB77D1: WorldSocket::ReadHandler() (WorldSocket.cpp:157)
==41785==    by 0x1AC068A: Socket<WorldSocket>::ReadHandlerInternal(boost::system::error_code, unsigned long) (Socket.h:201)
==41785==    by 0x1AC39ED: void std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)>::_M_call<std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&>(std::shared_ptr<WorldSocket>&, void const volatile*, boost::system::error_code const&, unsigned long const&) const (in /usr/local/bin/worldserver)
2015-04-19 15:30:24 +02:00
Shauren
18343a7309 Core/Networking: Cleanup CloseSocket calls from read failures in WorldSocket 2015-04-03 15:38:03 +02:00
Shauren
3da0f7e409 Core/Networking: Fixed deadlock in HandlePing if the client is about to be kicked for overspeed pings 2015-04-01 01:47:40 +02:00
Shauren
942f9f079c Build fix 2015-03-28 21:50:58 +01:00
Shauren
bed88e0dd4 Core/Networking: Fixed unsafe access to _worldSession member in WorldSocket 2015-03-28 21:45:27 +01:00
Shauren
5ac0b7844c Core/PacketIO: Implemented CMSG_ENABLE_NAGLE 2015-03-28 20:51:01 +01:00
click
aec6353297 Core: More INFO -> DEBUG changes (WorldSession/WorldSocket)
(cherry picked from commit 132d4ede37)

Conflicts:
	src/server/game/Server/WorldSession.cpp
	src/server/game/Server/WorldSocket.cpp
2015-03-18 00:18:20 +00:00
jackpoz
a20905598d Core/PacketLog: Avoid unneeded calls with disabled packet logs
Avoid calling GetOpcodeNameForLogging() when packet logs are disabled.

(cherry picked from commit 5e7d4a44e0)

Conflicts:
	src/server/game/Server/WorldSocket.cpp
2015-03-18 00:13:05 +00:00
Vincent-Michael
f2cb963565 Core/Packets: Update some opcodes and enable this 2015-03-15 03:09:34 +01:00
Vincent-Michael
369b08b68d Core/Misc: Update base stuff for V6.1.0 build 19702 2015-03-01 02:24:59 +01:00
Shauren
bbb2000fea Build fix 2015-02-24 00:32:01 +01:00
Shauren
3fcea2e9d4 Core/PacketIO: Handle ConnectToFailed and allow the client to reconnect up to 5 times before aborting login to world
Closes #14214
2015-02-23 22:35:26 +01:00
Shauren
880be1bc63 Core/Cosmetic: Use DEFINE_HANDLER to mark implemented packets processed directly in WorldSocket 2015-02-23 19:35:52 +01:00
Vincent-Michael
ab90f74486 Update copyright note for 2015
Happy new year
2015-01-01 00:28:09 +01:00
joschiwald
b68b6417f6 Core: fixed few coverity issues and warnings 2014-12-07 01:24:00 +01:00
joschiwald
d55c0cbf3a Core/Packets: updated AccountData packets 2014-11-16 06:08:46 +01:00
Shauren
e52357eb45 Warning fixes 2014-11-10 09:26:01 +01:00
Shauren
f59a701e29 Core/PacketIO: Updated and enabled logout opcodes 2014-11-09 21:36:06 +01:00
Shauren
31730d52b6 Core/Logging: Added connection index to packetlog 2014-11-09 20:48:13 +01:00
Shauren
bacc90b6ba Core/NetworkIO: Added second connection to WorldSession, handle AuthContinuedSession and enabled ConnectTo and ResumeComms 2014-11-09 00:37:33 +01:00
Shauren
b8d1d9a733 Core/PacketIO: Minor refactor to writing server packets 2014-11-03 20:23:21 +01:00
Shauren
dd040c5992 Core/NetworkIO: Fixed packet compression 2014-10-31 22:36:43 +01:00
Shauren
7de1356085 Core/NetworkIO: Moved SMSG_AUTH_CHALLENGE and CMSG_AUTH_SESSION to packet claases, added SMSG_COMPRESSED_PACKET 2014-10-31 01:20:53 +01:00
DDuarte
7b2274a744 Core/Networking: PoC changes to the way packets are handled
This is a rewrite of the way we send SMSG opcodes, the reasoning behind this is to make fixing packets sent in multiple places easier, and allow for clearer documentation of the packet fields.

Included SMSG_AUTH_RESPONSE and SMSG_AUCTION_COMMAND_RESULT as two examples.
2014-10-30 02:04:54 +00:00
DDuarte
07a640de0d Core: Fix warnings, mostly wrong printf formatters 2014-10-27 21:56:44 +00:00
DDuarte
f37e5b9afd Core/Opcodes: Support opcodes with the same ids and different direction
- Split enum Opcodes in enum OpcodeMisc/OpcodeClient/OpcodeServer
	- Old MSGs are temporarly in the enum OpcodeClient
- Split _internalTable of OpcodeTable in two tables, one for CMSG opcodes and another for SMSG opcodes

Note: most added static_cast<OpcodeX> will be removed once WorldPacket
is split in two classes (ServerPacket/ClientPacket, see #13434)
2014-10-25 15:42:16 +01:00
Shauren
ff781978a5 Fixed gcc linking 2014-10-23 15:00:31 +02:00
Shauren
7889a3bb87 Fixed gcc build2 2014-10-23 10:32:14 +02:00
Shauren
ae4496b769 Fixed gcc build 2014-10-23 10:28:46 +02:00
Shauren
b3e3cfa81f Core/Entities: First part of removing GetGUIDLow() uses 2014-10-22 17:33:55 +02:00
Shauren
484eae18ea Merge pull request #13361 from Sovak/602
Core/NetworkIO: *Fixed basic auth packets
2014-10-20 01:33:10 +02:00
Shauren
5e56430156 Core/PacketIO: Updated packet headers to 6.0 2014-10-20 01:27:00 +02:00
Sovak
51095ad39b Core/NetworkIO: *Fixed basic auth packets
Fixed basic character packets
Nulled all opcodes
Thanks to @Shauren for pointing some derps out

Signed-off-by: Sovak <sovak007@gmail.com>
2014-10-19 23:19:49 +02:00
Shauren
f773a9e053 Core: Implemented IPC (Inter-process communication) between worldserver and bnetserver using ZeroMQ library.
* Implemented ToonReady and ToonLoggedOut battle.net packets
2014-10-17 22:48:06 +02:00
Shauren
c2a39ce36a Core/PacketIO: Let packets that have a handler in array through to worldsession update 2014-10-12 15:32:25 +02:00
Sovak
d0db99961f Core/PacketIO: Restored client opcode handler check lost in ace->boost transition 2014-10-12 12:38:04 +02:00
Shauren
0f83c6ac32 Build fix 2014-10-11 23:49:31 +02:00
Shauren
665b1daab7 Core/PacketIO: Removed PacketFilter::DropHighBytes 2014-10-11 23:40:51 +02:00
Shauren
8e288dd673 Merge branch 'master' of https://github.com/TrinityCore/TrinityCore into 4.3.4
Conflicts:
	src/server/game/Achievements/AchievementMgr.cpp
	src/server/game/Battlefield/Battlefield.h
	src/server/game/Battlegrounds/ArenaScore.h
	src/server/game/Battlegrounds/ArenaTeam.cpp
	src/server/game/Battlegrounds/ArenaTeam.h
	src/server/game/Battlegrounds/ArenaTeamMgr.cpp
	src/server/game/Battlegrounds/BattlegroundMgr.cpp
	src/server/game/Battlegrounds/BattlegroundMgr.h
	src/server/game/Battlegrounds/BattlegroundQueue.h
	src/server/game/Battlegrounds/BattlegroundScore.h
	src/server/game/Battlegrounds/Zones/BattlegroundAB.h
	src/server/game/Battlegrounds/Zones/BattlegroundAV.h
	src/server/game/Battlegrounds/Zones/BattlegroundEY.h
	src/server/game/Battlegrounds/Zones/BattlegroundIC.h
	src/server/game/Battlegrounds/Zones/BattlegroundSA.h
	src/server/game/Battlegrounds/Zones/BattlegroundWS.h
	src/server/game/DungeonFinding/LFG.h
	src/server/game/DungeonFinding/LFGMgr.cpp
	src/server/game/DungeonFinding/LFGMgr.h
	src/server/game/DungeonFinding/LFGQueue.cpp
	src/server/game/DungeonFinding/LFGQueue.h
	src/server/game/Entities/Corpse/Corpse.cpp
	src/server/game/Entities/Creature/Creature.cpp
	src/server/game/Entities/Creature/GossipDef.cpp
	src/server/game/Entities/Creature/GossipDef.h
	src/server/game/Entities/Creature/TemporarySummon.cpp
	src/server/game/Entities/DynamicObject/DynamicObject.cpp
	src/server/game/Entities/Object/Object.cpp
	src/server/game/Entities/Object/Object.h
	src/server/game/Entities/Object/ObjectDefines.h
	src/server/game/Entities/Object/Updates/UpdateData.cpp
	src/server/game/Entities/Player/Player.cpp
	src/server/game/Entities/Player/Player.h
	src/server/game/Entities/Unit/Unit.cpp
	src/server/game/Entities/Unit/Unit.h
	src/server/game/Globals/ObjectAccessor.cpp
	src/server/game/Globals/ObjectAccessor.h
	src/server/game/Globals/ObjectMgr.cpp
	src/server/game/Groups/Group.cpp
	src/server/game/Groups/Group.h
	src/server/game/Guilds/Guild.cpp
	src/server/game/Guilds/Guild.h
	src/server/game/Handlers/AuctionHouseHandler.cpp
	src/server/game/Handlers/BattleGroundHandler.cpp
	src/server/game/Handlers/CalendarHandler.cpp
	src/server/game/Handlers/CharacterHandler.cpp
	src/server/game/Handlers/ChatHandler.cpp
	src/server/game/Handlers/GroupHandler.cpp
	src/server/game/Handlers/GuildHandler.cpp
	src/server/game/Handlers/ItemHandler.cpp
	src/server/game/Handlers/LFGHandler.cpp
	src/server/game/Handlers/MailHandler.cpp
	src/server/game/Handlers/MiscHandler.cpp
	src/server/game/Handlers/MovementHandler.cpp
	src/server/game/Handlers/NPCHandler.cpp
	src/server/game/Handlers/PetHandler.cpp
	src/server/game/Handlers/QueryHandler.cpp
	src/server/game/Handlers/QuestHandler.cpp
	src/server/game/Handlers/TradeHandler.cpp
	src/server/game/Handlers/VehicleHandler.cpp
	src/server/game/Movement/Spline/MoveSplineInit.cpp
	src/server/game/Server/WorldSession.cpp
	src/server/game/Server/WorldSession.h
	src/server/game/Spells/Spell.cpp
	src/server/scripts/Commands/cs_debug.cpp
	src/server/scripts/Commands/cs_gm.cpp
	src/server/scripts/Commands/cs_misc.cpp
	src/server/scripts/Commands/cs_modify.cpp
	src/server/scripts/Commands/cs_reset.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.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_zuljin.cpp
	src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp
	src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
	src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
	src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
	src/server/scripts/EasternKingdoms/zone_swamp_of_sorrows.cpp
	src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
	src/server/scripts/Kalimdor/zone_azshara.cpp
	src/server/scripts/Kalimdor/zone_durotar.cpp
	src/server/scripts/Kalimdor/zone_moonglade.cpp
	src/server/scripts/Kalimdor/zone_orgrimmar.cpp
	src/server/scripts/Kalimdor/zone_ungoro_crater.cpp
	src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
	src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
	src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
	src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp
	src/server/scripts/Spells/spell_dk.cpp
	src/server/scripts/Spells/spell_generic.cpp
	src/server/shared/Packets/ByteBuffer.h
2014-09-20 11:05:30 +02: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
ee0df6aa86 Core/NetworkIO: Applied 4.3.4 changes to "new" network code 2014-09-12 22:09:07 +02:00
Shauren
de4aea093b Merge branch 'master' of https://github.com/TrinityCore/TrinityCore into 4.3.4
Conflicts:
	src/server/game/Server/WorldSocket.h
2014-09-12 20:27:46 +02:00
Shauren
7f2cdfd166 Merge branch 'master' of https://github.com/TrinityCore/TrinityCore into 4.3.4
Conflicts:
	src/server/authserver/Main.cpp
	src/server/authserver/Server/AuthSession.cpp
	src/server/authserver/Server/AuthSession.h
	src/server/game/Server/WorldSocket.cpp
	src/server/game/Server/WorldSocket.h
	src/server/scripts/World/npcs_special.cpp
2014-09-12 20:26:46 +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