summaryrefslogtreecommitdiff
path: root/src/net/ea
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/ea')
-rw-r--r--src/net/ea/loginhandler.cpp19
-rw-r--r--src/net/ea/loginhandler.h3
2 files changed, 18 insertions, 4 deletions
diff --git a/src/net/ea/loginhandler.cpp b/src/net/ea/loginhandler.cpp
index 730535b8..42ba0c61 100644
--- a/src/net/ea/loginhandler.cpp
+++ b/src/net/ea/loginhandler.cpp
@@ -41,7 +41,8 @@ namespace EAthena {
extern ServerInfo charServer;
-LoginHandler::LoginHandler()
+LoginHandler::LoginHandler():
+ mRegistrationEnabled(true)
{
static const Uint16 _messages[] = {
SMSG_UPDATE_HOST,
@@ -190,9 +191,14 @@ void LoginHandler::handleMessage(Net::MessageIn &msg)
msg.readInt8(); // T
msg.readInt8(); // M
msg.readInt8(); // W
- msg.readInt8(); // (space)
- msg.readInt8(); // e
- msg.readInt8(); // A
+
+ unsigned int options = msg.readInt32();
+
+ if (options & 1)
+ {
+ // Registeration not allowed
+ mRegistrationEnabled = false;
+ }
//state = STATE_LOGIN;
}
@@ -217,6 +223,11 @@ void LoginHandler::disconnect()
mNetwork->disconnect();
}
+bool LoginHandler::isRegistrationEnabled()
+{
+ return mRegistrationEnabled;
+}
+
void LoginHandler::getRegistrationDetails()
{
// Not supported, so move on
diff --git a/src/net/ea/loginhandler.h b/src/net/ea/loginhandler.h
index 4e31e64c..1dd4f52c 100644
--- a/src/net/ea/loginhandler.h
+++ b/src/net/ea/loginhandler.h
@@ -51,6 +51,8 @@ class LoginHandler : public MessageHandler, public Net::LoginHandler
int supportedOptionalActions() const
{ return SetGenderOnRegister; }
+ bool isRegistrationEnabled();
+
void getRegistrationDetails();
unsigned int getMaxPasswordLength() const { return 25; }
@@ -81,6 +83,7 @@ class LoginHandler : public MessageHandler, public Net::LoginHandler
void sendLoginRegister(const std::string &username,
const std::string &password);
+ bool mRegistrationEnabled;
std::string mUpdateHost;
Worlds mWorlds;
Token mToken;