don't load maps for ep3 games on proxy server

This commit is contained in:
Martin Michelsen
2024-03-08 09:17:23 -08:00
parent 19e7f1c677
commit b491a57f57
+11 -4
View File
@@ -965,15 +965,20 @@ static HandlerResult SC_6x60_6xA2(shared_ptr<ProxyServer::LinkedSession> ses, co
case DropMode::PASSTHROUGH: case DropMode::PASSTHROUGH:
return HandlerResult::Type::FORWARD; return HandlerResult::Type::FORWARD;
case DropMode::INTERCEPT: case DropMode::INTERCEPT:
if (!ses->item_creator) {
ses->log.warning("Received item drop request in intercept mode, but item creator is missing");
return HandlerResult::Type::FORWARD;
}
break; break;
default: default:
throw logic_error("invalid drop mode"); throw logic_error("invalid drop mode");
} }
if (!ses->item_creator) {
ses->log.warning("Session is in INTERCEPT drop mode, but item creator is missing");
return HandlerResult::Type::FORWARD;
}
if (!ses->map) {
ses->log.warning("Session is in INTERCEPT drop mode, but map is missing");
return HandlerResult::Type::FORWARD;
}
G_SpecializableItemDropRequest_6xA2 cmd = normalize_drop_request(data.data(), data.size()); G_SpecializableItemDropRequest_6xA2 cmd = normalize_drop_request(data.data(), data.size());
auto rec = reconcile_drop_request_with_map( auto rec = reconcile_drop_request_with_map(
ses->log, ses->client_channel, cmd, ses->version(), ses->lobby_episode, ses->config, ses->map, false); ses->log, ses->client_channel, cmd, ses->version(), ses->lobby_episode, ses->config, ses->map, false);
@@ -1647,6 +1652,7 @@ static HandlerResult S_64(shared_ptr<ProxyServer::LinkedSession> ses, uint16_t,
// Recreate the item creator if needed, and load maps // Recreate the item creator if needed, and load maps
auto s = ses->require_server_state(); auto s = ses->require_server_state();
ses->set_drop_mode(ses->drop_mode); ses->set_drop_mode(ses->drop_mode);
if (!is_ep3(ses->version())) {
ses->map = Lobby::load_maps( ses->map = Lobby::load_maps(
ses->version(), ses->version(),
ses->lobby_episode, ses->lobby_episode,
@@ -1661,6 +1667,7 @@ static HandlerResult S_64(shared_ptr<ProxyServer::LinkedSession> ses, uint16_t,
make_shared<PSOV2Encryption>(ses->lobby_random_seed), make_shared<PSOV2Encryption>(ses->lobby_random_seed),
cmd->variations, cmd->variations,
&ses->log); &ses->log);
}
bool modified = false; bool modified = false;