diff options
Diffstat (limited to 'minecraft-protocol/src/server_status_pinger.rs')
| -rw-r--r-- | minecraft-protocol/src/server_status_pinger.rs | 49 |
1 files changed, 11 insertions, 38 deletions
diff --git a/minecraft-protocol/src/server_status_pinger.rs b/minecraft-protocol/src/server_status_pinger.rs index ae41ed51..0c1f2076 100644 --- a/minecraft-protocol/src/server_status_pinger.rs +++ b/minecraft-protocol/src/server_status_pinger.rs @@ -2,20 +2,22 @@ use crate::{ connection::Connection, packets::{ handshake::client_intention_packet::ClientIntentionPacket, - status::serverbound_status_request_packet::ServerboundStatusRequestPacket, + status::{ + clientbound_status_response_packet::ClientboundStatusResponsePacket, + serverbound_status_request_packet::ServerboundStatusRequestPacket, + }, ConnectionProtocol, Packet, PacketTrait, }, resolver, ServerAddress, }; -pub async fn ping_server(address: &ServerAddress) -> Result<(), String> { +pub async fn ping_server( + address: &ServerAddress, +) -> Result<ClientboundStatusResponsePacket, String> { let resolved_address = resolver::resolve_address(address).await?; let mut conn = Connection::new(&resolved_address).await?; - println!("resolved_address {}", &resolved_address.ip); - println!("writing intention packet {}", address.host); - // send the client intention packet and switch to the status state conn.send_packet( ClientIntentionPacket { @@ -35,37 +37,8 @@ pub async fn ping_server(address: &ServerAddress) -> Result<(), String> { let packet = conn.read_packet().await.unwrap(); - match packet { - Packet::ClientboundStatusResponsePacket(p) => { - println!("{:?}", p); - println!("{}", p.description.to_ansi(None)); - } - _ => { - println!("unexpected packet {:?}", packet); - } - } - - Ok(()) - - // let data = mc_buf::read_varint(conn.stream); - // println!("data {}", data); - - // // log what the server sends back - // loop { - // if 0 == conn.stream.read_buf(&mut conn.buffer).await.unwrap() { - // // The remote closed the connection. For this to be a clean - // // shutdown, there should be no data in the read buffer. If - // // there is, this means that the peer closed the socket while - // // sending a frame. - - // // log conn.buffer - // println!("{:?}", conn.buffer); - // if conn.buffer.is_empty() { - // println!("buffer is empty ok"); - // return Ok(()); - // } else { - // return Err("connection reset by peer".into()); - // } - // } - // } + Ok(match packet { + Packet::ClientboundStatusResponsePacket(p) => p, + _ => Err("Invalid packet type".to_string())?, + }) } |
