summaryrefslogtreecommitdiff
path: root/src/login
diff options
context:
space:
mode:
authormekolat <mekolat@users.noreply.github.com>2016-04-10 14:14:51 -0400
committermekolat <mekolat@users.noreply.github.com>2016-04-10 15:51:50 -0400
commitfcf31a258f2925650cf51f15d0280c0efb67c6a2 (patch)
treed7959d448dcfa0f0ae34789845e2a6b9b778fdf1 /src/login
parent3cda94665c73447b09338d6f219ef22b58f066bd (diff)
downloadtmwa-fcf31a258f2925650cf51f15d0280c0efb67c6a2.tar.gz
tmwa-fcf31a258f2925650cf51f15d0280c0efb67c6a2.tar.bz2
tmwa-fcf31a258f2925650cf51f15d0280c0efb67c6a2.tar.xz
tmwa-fcf31a258f2925650cf51f15d0280c0efb67c6a2.zip
consolidate client version handling
Diffstat (limited to 'src/login')
-rw-r--r--src/login/login.cpp15
-rw-r--r--src/login/login.hpp1
2 files changed, 11 insertions, 5 deletions
diff --git a/src/login/login.cpp b/src/login/login.cpp
index c071429..7ae95c7 100644
--- a/src/login/login.cpp
+++ b/src/login/login.cpp
@@ -114,6 +114,8 @@ bool extract(XString str, login::ACO *aco)
}
namespace login
{
+#define VERSION_2_UPDATEHOST (1<<0)
+
struct mmo_account
{
AccountName userid;
@@ -908,8 +910,9 @@ void parse_fromchar(Session *s)
fixed_13.account_id = acc;
fixed_13.invalid = 0;
fixed_13.email = ad.email;
+ fixed_13.client_protocol_version = auth_fifo[i].client_version;
- send_fpacket<0x2713, 51>(s, fixed_13);
+ send_fpacket<0x2713, 55>(s, fixed_13);
break;
}
}
@@ -928,7 +931,7 @@ void parse_fromchar(Session *s)
// fixed_13.email
// fixed_13.connect_until
- send_fpacket<0x2713, 51>(s, fixed_13);
+ send_fpacket<0x2713, 55>(s, fixed_13);
}
}
break;
@@ -2441,7 +2444,7 @@ void parse_login(Session *s)
result = mmo_auth(&account, s);
if (result == -1)
{
- if (fixed.version < MIN_CLIENT_VERSION)
+ if (fixed.client_protocol_version < wrap<ClientVersion>(MIN_CLIENT_VERSION))
result = 5; // client too old
}
if (result == -1)
@@ -2478,7 +2481,7 @@ void parse_login(Session *s)
*
* All supported clients now send both, so the check is removed.
*/
- // if (version_2 & VERSION_2_UPDATEHOST)
+ if (fixed.flags & VERSION_2_UPDATEHOST)
{
if (login_conf.update_host)
{
@@ -2488,7 +2491,7 @@ void parse_login(Session *s)
// Load list of char servers into outbound packet
std::vector<Packet_Repeat<0x0069>> repeat_69;
- // if (version_2 & VERSION_2_SERVERORDER)
+ //if (fixed.flags & VERSION_2_SERVERORDER)
for (int i = 0; i < MAX_SERVERS; i++)
{
if (server_session[i])
@@ -2531,6 +2534,8 @@ void parse_login(Session *s)
auth_fifo[auth_fifo_pos].delflag = 0;
auth_fifo[auth_fifo_pos].ip =
s->client_ip;
+ auth_fifo[auth_fifo_pos].client_version =
+ fixed.client_protocol_version;
auth_fifo_pos++;
// if no char-server, don't send void list of servers, just disconnect the player with proper message
}
diff --git a/src/login/login.hpp b/src/login/login.hpp
index ba42bae..ed44e68 100644
--- a/src/login/login.hpp
+++ b/src/login/login.hpp
@@ -79,6 +79,7 @@ struct AuthFifo
IP4Address ip;
SEX sex;
int delflag;
+ ClientVersion client_version;
};
} // namespace login
} // namespace tmwa