From f8fb37a14476e0d8fd7cc2c87fe9813ae9dc30b5 Mon Sep 17 00:00:00 2001
From: mekolat <mekolat@users.noreply.github.com>
Date: Tue, 19 May 2015 21:09:48 -0400
Subject: handle old client in login server too

---
 src/char/char.hpp   |  3 ---
 src/login/login.cpp |  4 +---
 src/login/login.hpp |  2 --
 src/mmo/login.t.hpp | 44 --------------------------------------------
 src/mmo/version.hpp |  3 +++
 tools/protocol.py   |  7 +------
 6 files changed, 5 insertions(+), 58 deletions(-)
 delete mode 100644 src/mmo/login.t.hpp

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],
-- 
cgit v1.2.3-70-g09d2