expand proxy options, catch invalid commands from server

This commit is contained in:
Martin Michelsen
2022-09-29 23:47:44 -07:00
parent 95220bfbdc
commit 96caa94d1e
4 changed files with 445 additions and 1713 deletions
+6
View File
@@ -200,6 +200,11 @@ static void server_command_dbgid(shared_ptr<ServerState>, shared_ptr<Lobby>,
static void server_command_proxygc(shared_ptr<ServerState>, shared_ptr<Lobby>, static void server_command_proxygc(shared_ptr<ServerState>, shared_ptr<Lobby>,
shared_ptr<Client> c, const std::u16string& args) { shared_ptr<Client> c, const std::u16string& args) {
if (args.empty()) {
client_options_cache.delete_key(
string_printf("proxy_remote_guild_card_number:%" PRIX32, c->license->serial_number));
send_text_message(c, u"Proxy remote Guild\nCard number cleared");
} else {
uint32_t proxy_remote_guild_card_number = stoll(encode_sjis(args), nullptr, 0); uint32_t proxy_remote_guild_card_number = stoll(encode_sjis(args), nullptr, 0);
client_options_cache.replace( client_options_cache.replace(
string_printf("proxy_remote_guild_card_number:%" PRIX32, c->license->serial_number), string_printf("proxy_remote_guild_card_number:%" PRIX32, c->license->serial_number),
@@ -207,6 +212,7 @@ static void server_command_proxygc(shared_ptr<ServerState>, shared_ptr<Lobby>,
send_text_message_printf(c, "Proxy remote Guild\nCard number set to\n$C6%" PRIu32, send_text_message_printf(c, "Proxy remote Guild\nCard number set to\n$C6%" PRIu32,
proxy_remote_guild_card_number); proxy_remote_guild_card_number);
} }
}
static void proxy_command_proxygc(shared_ptr<ServerState>, static void proxy_command_proxygc(shared_ptr<ServerState>,
ProxyServer::LinkedSession& session, const std::u16string& args) { ProxyServer::LinkedSession& session, const std::u16string& args) {
+387 -1669
View File
File diff suppressed because it is too large Load Diff
+6
View File
@@ -663,6 +663,12 @@ void ProxyServer::LinkedSession::on_error(Channel& ch, short events) {
} }
} }
void ProxyServer::LinkedSession::clear_lobby_players(size_t num_slots) {
this->lobby_players.clear();
this->lobby_players.resize(num_slots);
this->log.info("Cleared lobby players");
}
void ProxyServer::LinkedSession::send_to_game_server(const char* error_message) { void ProxyServer::LinkedSession::send_to_game_server(const char* error_message) {
// Delete all the other players // Delete all the other players
for (size_t x = 0; x < this->lobby_players.size(); x++) { for (size_t x = 0; x < this->lobby_players.size(); x++) {
+2
View File
@@ -147,6 +147,8 @@ public:
static void on_error(Channel& ch, short events); static void on_error(Channel& ch, short events);
void on_timeout(); void on_timeout();
void clear_lobby_players(size_t num_slots);
void send_to_game_server(const char* error_message = nullptr); void send_to_game_server(const char* error_message = nullptr);
void disconnect(); void disconnect();