From 8d206133a3a89f279b9e4b4073f9364116127619 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sun, 2 Oct 2022 12:16:16 -0700 Subject: [PATCH] also block B7 for non-Ep3 clients --- src/ProxyCommands.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index 703266c2..79354f82 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -943,6 +943,16 @@ static HandlerResult S_13_A7(shared_ptr, return HandlerResult::Type::FORWARD; } +static HandlerResult S_G_B7(shared_ptr, + ProxyServer::LinkedSession& session, uint16_t, uint32_t, string&) { + if (session.newserv_client_config.cfg.flags & Client::Flag::IS_EPISODE_3) { + return HandlerResult::Type::FORWARD; + } else { + session.server_channel.send(0xB7, 0x00); + return HandlerResult::Type::SUPPRESS; + } +} + static HandlerResult S_G_B8(shared_ptr, ProxyServer::LinkedSession& session, uint16_t, uint32_t, string& data) { if (session.save_files) { @@ -1051,9 +1061,6 @@ constexpr on_command_t S_B_65_67_68 = &S_65_67_68; template static HandlerResult S_64(shared_ptr, ProxyServer::LinkedSession& session, uint16_t, uint32_t flag, string& data) { - session.clear_lobby_players(4); - session.is_in_game = true; - CmdT* cmd; S_JoinGame_GC_Ep3_64* cmd_ep3 = nullptr; if (session.sub_version >= 0x40) { @@ -1063,6 +1070,9 @@ static HandlerResult S_64(shared_ptr, cmd = &check_size_t(data); } + session.clear_lobby_players(4); + session.is_in_game = true; + bool modified = false; session.lobby_client_id = cmd->client_id; @@ -1489,7 +1499,7 @@ static on_command_t handlers[0x100][6][2] = { /* B4 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* B5 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* B6 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, -/* B7 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, +/* B7 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_G_B7, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* B8 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_G_B8, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}}, /* B9 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* BA */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}},