aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Server/Protocol/Handlers/AuthHandler.cpp46
-rw-r--r--src/server/game/Server/WorldSession.h3
-rw-r--r--src/server/game/World/World.cpp29
3 files changed, 54 insertions, 24 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/AuthHandler.cpp b/src/server/game/Server/Protocol/Handlers/AuthHandler.cpp
new file mode 100644
index 00000000000..3728f0edf7e
--- /dev/null
+++ b/src/server/game/Server/Protocol/Handlers/AuthHandler.cpp
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "Opcodes.h"
+#include "WorldSession.h"
+#include "WorldPacket.h"
+
+void WorldSession::SendAuthResponse(uint8 code, bool shortForm, uint32 queuePos)
+{
+ WorldPacket packet(SMSG_AUTH_RESPONSE, 1 + 4 + 1 + 4 + 1 + (shortForm ? 0 : (4 + 1)));
+ packet << uint8(code);
+ packet << uint32(0); // BillingTimeRemaining
+ packet << uint8(0); // BillingPlanFlags
+ packet << uint32(0); // BillingTimeRested
+ packet << uint8(Expansion()); // 0 - normal, 1 - TBC, 2 - WOTLK, must be set in database manually for each account
+
+ if (!shortForm)
+ {
+ packet << uint32(queuePos); // Queue position
+ packet << uint8(0); // Unk 3.3.0
+ }
+
+ SendPacket(&packet);
+}
+
+void WorldSession::SendClientCacheVersion(uint32 version)
+{
+ WorldPacket data(SMSG_CLIENTCACHE_VERSION, 4);
+ data << uint32(version);
+ SendPacket(&data);
+}
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 965b398563b..8bcf0c1eccf 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -160,6 +160,9 @@ class WorldSession
void SendSetPhaseShift(uint32 phaseShift);
void SendQueryTimeResponse();
+ void SendAuthResponse(uint8 code, bool shortForm, uint32 queuePos = 0);
+ void SendClientCacheVersion(uint32 version);
+
AccountTypes GetSecurity() const { return _security; }
uint32 GetAccountId() const { return _accountId; }
Player* GetPlayer() const { return _player; }
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 14f565b38b8..a42d20a4048 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -218,7 +218,7 @@ void World::AddSession(WorldSession* s)
}
void
-World::AddSession_ (WorldSession* s)
+World::AddSession_(WorldSession* s)
{
ASSERT (s);
@@ -270,19 +270,11 @@ World::AddSession_ (WorldSession* s)
return;
}
- WorldPacket packet(SMSG_AUTH_RESPONSE, 1 + 4 + 1 + 4 + 1);
- packet << uint8(AUTH_OK);
- packet << uint32(0); // BillingTimeRemaining
- packet << uint8(0); // BillingPlanFlags
- packet << uint32(0); // BillingTimeRested
- packet << uint8(s->Expansion()); // 0 - normal, 1 - TBC, 2 - WOTLK, must be set in database manually for each account
- s->SendPacket(&packet);
+ s->SendAuthResponse(AUTH_OK, true);
s->SendAddonsInfo();
- WorldPacket pkt(SMSG_CLIENTCACHE_VERSION, 4);
- pkt << uint32(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
- s->SendPacket(&pkt);
+ s->SendClientCacheVersion(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
s->SendTutorialsData();
@@ -337,15 +329,7 @@ void World::AddQueuedPlayer(WorldSession* sess)
m_QueuedPlayer.push_back(sess);
// The 1st SMSG_AUTH_RESPONSE needs to contain other info too.
- WorldPacket packet(SMSG_AUTH_RESPONSE, 1+4+1+4+1+4+1);
- packet << uint8(AUTH_WAIT_QUEUE);
- packet << uint32(0); // BillingTimeRemaining
- packet << uint8(0); // BillingPlanFlags
- packet << uint32(0); // BillingTimeRested
- packet << uint8(sess->Expansion()); // 0 - normal, 1 - TBC, 2 - WOTLK, must be set in database manually for each account
- packet << uint32(GetQueuePos(sess)); // Queue position
- packet << uint8(0); // Unk 3.3.0
- sess->SendPacket(&packet);
+ sess->SendAuthResponse(AUTH_WAIT_QUEUE, false, GetQueuePos(sess));
}
bool World::RemoveQueuedPlayer(WorldSession* sess)
@@ -387,10 +371,7 @@ bool World::RemoveQueuedPlayer(WorldSession* sess)
pop_sess->SendAuthWaitQue(0);
pop_sess->SendAddonsInfo();
- WorldPacket pkt(SMSG_CLIENTCACHE_VERSION, 4);
- pkt << uint32(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
- pop_sess->SendPacket(&pkt);
-
+ pop_sess->SendClientCacheVersion(sWorld.getIntConfig(CONFIG_CLIENTCACHE_VERSION));
pop_sess->SendAccountDataTimes(GLOBAL_CACHE_MASK);
pop_sess->SendTutorialsData();