Don't use lobby join method if server isn't probed yet when required

This commit is contained in:
timvisee
2021-11-25 14:20:58 +01:00
parent 956c428251
commit addfb1c135

View File

@@ -21,6 +21,12 @@ pub async fn occupy(
) -> Result<MethodResult, ()> {
trace!(target: "lazymc", "Using lobby method to occupy joining client");
// Must be ready to lobby
if must_still_probe(&config, &server).await {
warn!(target: "lazymc", "Client connected but lobby is not ready, using next join method, probing not completed");
return Ok(MethodResult::Continue(inbound));
}
// Start lobby
lobby::serve(client, client_info, inbound, config, server, inbound_queue).await?;
@@ -28,3 +34,13 @@ pub async fn occupy(
Ok(MethodResult::Consumed)
}
/// Check whether we still have to probe before we can use the lobby.
async fn must_still_probe(config: &Config, server: &Server) -> bool {
must_probe(config) && server.probed_join_game.lock().await.is_none()
}
/// Check whether we must have probed data.
fn must_probe(config: &Config) -> bool {
config.server.forge
}