aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-06-08 16:14:24 +0200
committerShauren <shauren.trinity@gmail.com>2014-06-08 16:14:24 +0200
commit7dd552c8261be9d1c9c8e45628e5aca5cdae405d (patch)
tree1b84d014b52f5fe638a9bde1494cbb2e88de0c91 /src/server/game/Server
parente1e5f2a196240707f1671a02df6bd4966fed67f3 (diff)
parent9f69eda67f7fad50553f8d569851a5005437e677 (diff)
Merge branch 'battle.net' into 4.3.4
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/WorldSocket.cpp17
-rw-r--r--src/server/game/Server/WorldSocket.h4
2 files changed, 16 insertions, 5 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 737a2f8cbf1..1a93e7ae1d5 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -856,9 +856,20 @@ int WorldSocket::HandleAuthSession(WorldPacket& recvPacket)
// Get the account information from the realmd database
// 0 1 2 3 4 5 6 7 8
// SELECT id, sessionkey, last_ip, locked, expansion, mutetime, locale, recruiter, os FROM account WHERE username = ?
- PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO_BY_NAME);
-
- stmt->setString(0, account);
+ size_t hashPos = account.find_last_of('#');
+ PreparedStatement* stmt;
+ if (hashPos != std::string::npos)
+ {
+ Tokenizer tokens(account, '#', 2);
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO_BY_BNET);
+ stmt->setUInt32(0, atol(tokens[0]));
+ stmt->setUInt8(1, atol(tokens[1]));
+ }
+ else
+ {
+ stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO_BY_NAME);
+ stmt->setString(0, account);
+ }
PreparedQueryResult result = LoginDatabase.Query(stmt);
diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h
index 4ccacd05c7e..306a50c083a 100644
--- a/src/server/game/Server/WorldSocket.h
+++ b/src/server/game/Server/WorldSocket.h
@@ -39,7 +39,7 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "Common.h"
-#include "AuthCrypt.h"
+#include "WorldPacketCrypt.h"
class ACE_Message_Block;
class WorldPacket;
@@ -176,7 +176,7 @@ class WorldSocket : public WorldHandler
std::string m_Address;
/// Class used for managing encryption of the headers
- AuthCrypt m_Crypt;
+ WorldPacketCrypt m_Crypt;
/// Mutex lock to protect m_Session
LockType m_SessionLock;