diff options
author | mekolat <mekolat@users.noreply.github.com> | 2015-05-19 21:09:48 -0400 |
---|---|---|
committer | mekolat <mekolat@users.noreply.github.com> | 2015-05-19 21:09:48 -0400 |
commit | f8fb37a14476e0d8fd7cc2c87fe9813ae9dc30b5 (patch) | |
tree | f8c5ae4fe8c2054c1bb51cffc253805f1c8a9981 | |
parent | c6c3671dbe28c596ef06b4670979c5923c8821b6 (diff) | |
download | tmwa-f8fb37a14476e0d8fd7cc2c87fe9813ae9dc30b5.tar.gz tmwa-f8fb37a14476e0d8fd7cc2c87fe9813ae9dc30b5.tar.bz2 tmwa-f8fb37a14476e0d8fd7cc2c87fe9813ae9dc30b5.tar.xz tmwa-f8fb37a14476e0d8fd7cc2c87fe9813ae9dc30b5.zip |
handle old client in login server too
-rw-r--r-- | src/char/char.hpp | 3 | ||||
-rw-r--r-- | src/login/login.cpp | 4 | ||||
-rw-r--r-- | src/login/login.hpp | 2 | ||||
-rw-r--r-- | src/mmo/login.t.hpp | 44 | ||||
-rw-r--r-- | src/mmo/version.hpp | 3 | ||||
-rwxr-xr-x | tools/protocol.py | 7 |
6 files changed, 5 insertions, 58 deletions
diff --git a/src/char/char.hpp b/src/char/char.hpp index 8adac4d..049875b 100644 --- a/src/char/char.hpp +++ b/src/char/char.hpp @@ -42,9 +42,6 @@ std::chrono::seconds DEFAULT_AUTOSAVE_INTERVAL = 5_min; constexpr GmLevel default_gm_level = GmLevel::from(0_u32); -// increase the min version when the protocol is incompatible with old m+ versions -#define MIN_CLIENT_VERSION 1 - struct AuthFifoEntry { AccountId account_id; diff --git a/src/login/login.cpp b/src/login/login.cpp index 886c510..9310ad3 100644 --- a/src/login/login.cpp +++ b/src/login/login.cpp @@ -2494,9 +2494,7 @@ void parse_login(Session *s) result = mmo_auth(&account, s); if (result == -1) { - VERSION_2 version_2 = fixed.version_2_flags; - if (!bool(version_2 & VERSION_2::UPDATEHOST) - || !bool(version_2 & VERSION_2::SERVERORDER)) + if (fixed.version < MIN_CLIENT_VERSION) result = 5; // client too old } if (result == -1) diff --git a/src/login/login.hpp b/src/login/login.hpp index ae99558..ba42bae 100644 --- a/src/login/login.hpp +++ b/src/login/login.hpp @@ -18,8 +18,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. -#include "login.t.hpp" - #include "fwd.hpp" #include "../strings/vstring.hpp" diff --git a/src/mmo/login.t.hpp b/src/mmo/login.t.hpp deleted file mode 100644 index f2c775a..0000000 --- a/src/mmo/login.t.hpp +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once -// login.t.hpp - externally useful types from login -// -// Copyright © ????-2004 Athena Dev Teams -// Copyright © 2004-2011 The Mana World Development Team -// Copyright © 2011-2014 Ben Longbons <b.r.longbons@gmail.com> -// -// This file is part of The Mana World (Athena server) -// -// 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 3 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, see <http://www.gnu.org/licenses/>. - -#include "fwd.hpp" - -#include <cstdint> - -#include "../generic/enum.hpp" - - -namespace tmwa -{ -namespace e -{ -enum class VERSION_2 : uint8_t -{ - /// client supports updatehost - UPDATEHOST = 0x01, - /// send servers in forward order - SERVERORDER = 0x02, -}; -ENUM_BITWISE_OPERATORS(VERSION_2) -} -using e::VERSION_2; -} // namespace tmwa diff --git a/src/mmo/version.hpp b/src/mmo/version.hpp index a09953f..6de3a9c 100644 --- a/src/mmo/version.hpp +++ b/src/mmo/version.hpp @@ -35,6 +35,9 @@ namespace tmwa #define TMWA_SERVER_INTER 0x04 #define TMWA_SERVER_MAP 0x08 +// increase the min version when the protocol is incompatible with old m+ versions +#define MIN_CLIENT_VERSION 1 + // TODO now that I generate the protocol, split 'flags' out of the struct struct Version { diff --git a/tools/protocol.py b/tools/protocol.py index 003f511..86b625f 100755 --- a/tools/protocol.py +++ b/tools/protocol.py @@ -1456,9 +1456,6 @@ def build_context(): #md5_native = md5_h.native('md5_native') #SaltString = md5_h.native('SaltString') - VERSION_2 = login_th.native('VERSION_2') - - Position1 = clif_th.native('Position1') NetPosition1 = clif_th.network('NetPosition1') Position2 = clif_th.native('Position2') @@ -1588,8 +1585,6 @@ def build_context(): ] ) - version_2 = ctx.enum(VERSION_2, u8) - stats6 = ctx.struct( 'Stats6', [ @@ -1966,7 +1961,7 @@ def build_context(): at(2, u32, 'unknown'), at(6, account_name, 'account name'), at(30, account_pass, 'account pass'), - at(54, version_2, 'version 2 flags'), + at(54, u8, 'version'), ], fixed_size=55, pre=[HUMAN, 0x7531], |