From 5e1c019de89f46f8a3cf18f042dbb9264288f91d Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 19 Feb 2016 16:24:03 +0100 Subject: [PATCH] Minor fix to LoginResponse parsing, other tiny cleanups. --- src/proto/packet.rs | 7 +++---- src/proto/server.rs | 6 +++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/proto/packet.rs b/src/proto/packet.rs index 720f2ff..573ecb5 100644 --- a/src/proto/packet.rs +++ b/src/proto/packet.rs @@ -95,7 +95,7 @@ impl Packet { pub fn finalize(mut self) -> Vec { let bytes_len = (self.bytes.len() - U32_SIZE) as u32; { - let mut first_word = &mut self.bytes[..4]; + let mut first_word = &mut self.bytes[..U32_SIZE]; first_word.write_u32::(bytes_len).unwrap(); } self.bytes @@ -116,9 +116,8 @@ impl io::Read for Packet { fn read(&mut self, buf: &mut [u8]) -> io::Result { let mut slice = &self.bytes[self.cursor..]; let result = slice.read(buf); - match result { - Ok(num_bytes_read) => self.cursor += num_bytes_read, - Err(_) => () + if let Ok(num_bytes_read) = result { + self.cursor += num_bytes_read } result } diff --git a/src/proto/server.rs b/src/proto/server.rs index 29f5ba5..6c9a53a 100644 --- a/src/proto/server.rs +++ b/src/proto/server.rs @@ -143,6 +143,10 @@ impl LoginResponse { let resp = if ok { let motd = try!(packet.read_str()); let ip = net::Ipv4Addr::from(try!(packet.read_uint())); + match packet.read_bool() { + Ok(value) => debug!("LoginResponse last field: {}", value), + Err(e) => debug!("Error reading LoginResponse field: {:?}", e), + } LoginResponse::LoginOk { motd: motd, ip: ip, @@ -150,7 +154,7 @@ impl LoginResponse { } } else { LoginResponse::LoginFail { - reason: try!(packet.read_str()).to_string() + reason: try!(packet.read_str()) } }; Ok(resp)