From 007359e220e9cb92e3c3b4569b08b4dfdbef7b52 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sun, 25 Dec 2022 15:43:16 -0800 Subject: [PATCH] block time updates on proxy server --- src/ProxyCommands.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index b421144b..df725755 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -593,6 +593,14 @@ static HandlerResult S_88(shared_ptr, return modified ? HandlerResult::Type::MODIFIED : HandlerResult::Type::FORWARD; } +static HandlerResult S_B1(shared_ptr, + ProxyServer::LinkedSession& session, uint16_t, uint32_t, string&) { + // Block all time updates from the remote server, so client's time remains + // consistent + session.server_channel.send(0x99, 0x00); + return HandlerResult::Type::SUPPRESS; +} + static HandlerResult S_B2(shared_ptr, ProxyServer::LinkedSession& session, uint16_t, uint32_t flag, string& data) { const auto& cmd = check_size_t(data, sizeof(S_ExecuteCode_B2), 0xFFFF); @@ -1602,7 +1610,7 @@ static on_command_t handlers[0x100][6][2] = { /* AE */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* AF */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* B0 */ {{S_invalid, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}}, -/* B1 */ {{S_invalid, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}}, +/* B1 */ {{S_invalid, nullptr}, {S_B1, nullptr}, {S_B1, nullptr}, {S_B1, nullptr}, {S_B1, nullptr}, {S_B1, nullptr}}, /* B2 */ {{S_invalid, nullptr}, {nullptr, nullptr}, {nullptr, nullptr}, {S_B2, nullptr}, {S_B2, nullptr}, {S_B2, nullptr}}, /* B3 */ {{S_invalid, C_B3}, {S_invalid, C_B3}, {S_invalid, C_B3}, {S_invalid, C_B3}, {S_invalid, C_B3}, {S_invalid, C_B3}}, /* B4 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}},