connectionClosedError
This commit is contained in:
parent
4ccb6487c8
commit
5f243e71fe
@ -204,8 +204,16 @@ pub trait DataBufferReader {
|
||||
impl<R: Read> DataBufferReader for R {
|
||||
fn read_bytes(&mut self, size: usize) -> Result<Vec<u8>, ProtocolError> {
|
||||
let mut buf = vec![0; size];
|
||||
match self.read_exact(&mut buf) {
|
||||
Ok(_) => Ok(buf),
|
||||
match self.read(&mut buf) {
|
||||
Ok(i) => if i == size {
|
||||
Ok(buf)
|
||||
} else if i == 0 {
|
||||
Err(ProtocolError::ConnectionClosedError)
|
||||
} else {
|
||||
buf.truncate(i);
|
||||
buf.append(&mut self.read_bytes(size-i)?);
|
||||
Ok(buf)
|
||||
},
|
||||
Err(_) => Err(ProtocolError::ReadError),
|
||||
}
|
||||
}
|
||||
|
18
src/lib.rs
18
src/lib.rs
@ -251,15 +251,27 @@ impl<T: Read + Write> MinecraftConnection<T> {
|
||||
|
||||
#[cfg(feature = "atomic_clone")]
|
||||
{
|
||||
return read_packet_atomic(
|
||||
return match read_packet_atomic(
|
||||
&mut self.stream,
|
||||
self.compression.clone(),
|
||||
Ordering::Relaxed,
|
||||
)
|
||||
) {
|
||||
Err(ProtocolError::ConnectionClosedError) => {
|
||||
self.set_alive(false);
|
||||
Err(ProtocolError::ConnectionClosedError)
|
||||
},
|
||||
i => i
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "atomic_clone"))]
|
||||
read_packet(&mut self.stream, self.compression)
|
||||
match read_packet(&mut self.stream, self.compression) {
|
||||
Err(ProtocolError::ConnectionClosedError) => {
|
||||
self.set_alive(false);
|
||||
Err(ProtocolError::ConnectionClosedError)
|
||||
},
|
||||
i => i
|
||||
}
|
||||
}
|
||||
|
||||
/// Write [`Packet`](Packet) to connection
|
||||
|
Loading…
Reference in New Issue
Block a user