feat: gracefully handle status request, when server doesn't exist
This commit is contained in:
parent
0d5fec173d
commit
1d9d205d8c
2 changed files with 16 additions and 8 deletions
20
src/main.rs
20
src/main.rs
|
|
@ -5,9 +5,7 @@ use std::time::Duration;
|
|||
use tokio::net::{TcpListener, TcpStream};
|
||||
use tracing_subscriber::{prelude::*, EnvFilter};
|
||||
|
||||
use crate::mc_server::{
|
||||
complete_status_request, MinecraftAPI, MinecraftServerHandle, ServerDeploymentStatus,
|
||||
};
|
||||
use crate::mc_server::{MinecraftAPI, MinecraftServerHandle, ServerDeploymentStatus};
|
||||
use crate::opaque_error::OpaqueError;
|
||||
use crate::packets::clientbound::status::StatusStructNew;
|
||||
use crate::packets::serverbound::handshake::Handshake;
|
||||
|
|
@ -141,7 +139,18 @@ async fn handle_status<T: MinecraftServerHandle>(
|
|||
"Could not find §kserver§r: §f§o{server_addr}§r\nMinecraft Ingress{bye_message}"
|
||||
);
|
||||
|
||||
return complete_status_request(client_stream, status_struct).await;
|
||||
mc_server::complete_status_request(client_stream, status_struct).await?;
|
||||
|
||||
// Recieve the ping packet, so the client does not send it again
|
||||
let _ping = Packet::parse(client_stream).await?;
|
||||
// Send a bad ping packet back, so the client shows *searching* icon
|
||||
let _pong = Packet::new(9, vec![0; 8])
|
||||
.ok_or("failed to create empty pong packet?")?
|
||||
.send_packet(client_stream)
|
||||
.await
|
||||
.map_err(|_| "failed to send pong packet")?;
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
};
|
||||
tracing::debug!("kube server status: {:?}", server.query_status().await?);
|
||||
|
|
@ -167,7 +176,8 @@ async fn handle_status<T: MinecraftServerHandle>(
|
|||
}
|
||||
};
|
||||
|
||||
return complete_status_request(client_stream, status_struct).await;
|
||||
mc_server::complete_status_request(client_stream, status_struct).await?;
|
||||
return mc_server::handle_ping(client_stream).await;
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "info", fields(server_addr = handshake.get_server_address()),skip(client_stream, handshake, api))]
|
||||
|
|
|
|||
|
|
@ -39,8 +39,6 @@ pub async fn complete_status_request(
|
|||
.send_packet(client_stream)
|
||||
.await
|
||||
.map_err(|_| "Failed to send status packet")?;
|
||||
|
||||
mc_server::handle_ping(client_stream).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue