Fix compression in read_packet

This commit is contained in:
water bottle 2024-05-21 09:12:19 +10:00 committed by GitHub
parent a74aa5856c
commit a67707609b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -410,12 +410,22 @@ impl<T: Read + Write> MinecraftConnection<T> {
Err(_) => { return Err(ProtocolError::ReadError) }, Err(_) => { return Err(ProtocolError::ReadError) },
}; };
Ok(Packet::from_bytes(packet_id, &data)) return Ok(Packet::from_bytes(packet_id, &data))
} else { }
let packet_length = self.read_usize_varint()?; let packet_length = self.read_usize_varint()?;
let data_length = self.read_usize_varint()?; let data_length = self.read_usize_varint()?;
if data_length == 0 { if data_length == 0 {
let packet_id = self.read_u8_varint()?;
let mut data: Vec<u8> = vec![0; packet_length - 2];
match self.stream.read_exact(&mut data) {
Ok(i) => i,
Err(_) => { return Err(ProtocolError::ReadError) },
};
return Ok(Packet::from_bytes(packet_id, &data))
}
let mut data: Vec<u8> = vec![0; packet_length - 1]; let mut data: Vec<u8> = vec![0; packet_length - 1];
match self.stream.read_exact(&mut data) { match self.stream.read_exact(&mut data) {
Ok(i) => i, Ok(i) => i,
@ -435,17 +445,6 @@ impl<T: Read + Write> MinecraftConnection<T> {
}; };
Ok(Packet::from_bytes(packet_id, &data)) Ok(Packet::from_bytes(packet_id, &data))
} else {
let packet_id = self.read_u8_varint()?;
let mut data: Vec<u8> = vec![0; data_length - 1];
match self.stream.read_exact(&mut data) {
Ok(i) => i,
Err(_) => { return Err(ProtocolError::ReadError) },
};
Ok(Packet::from_bytes(packet_id, &data))
}
}
} }
pub fn write_packet(&mut self, packet: &Packet) -> Result<(), ProtocolError> { pub fn write_packet(&mut self, packet: &Packet) -> Result<(), ProtocolError> {