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