diff --git a/src/client/client.rs b/src/client/client.rs index d85be29..c3548fd 100644 --- a/src/client/client.rs +++ b/src/client/client.rs @@ -558,6 +558,10 @@ async fn receive_packet<'c, T: Read + Write>( .receive(&mut recv_buffer[writer.position..(writer.position + 1)]) .await?; trace!(" Received data!"); + if len == 0 { + trace!("Zero byte len packet received, dropping connection."); + return Err(NetworkError); + } i = i + len; if let Err(_e) = writer.insert_ref(len, &recv_buffer[writer.position..i]) { error!("Error occurred during write to buffer!"); @@ -586,6 +590,10 @@ async fn receive_packet<'c, T: Read + Write>( } loop { + if writer.position == target_len + rem_len_len { + trace!("Received packet with len: {}", (target_len + rem_len_len)); + return Ok(target_len + rem_len_len); + } let len: usize = conn .receive(&mut recv_buffer[writer.position..writer.position + (target_len - i)]) .await?; @@ -596,10 +604,6 @@ async fn receive_packet<'c, T: Read + Write>( error!("Error occurred during write to buffer!"); return Err(BuffError); } - if writer.position == target_len + rem_len_len { - trace!("Received packet with len: {}", (target_len + rem_len_len)); - return Ok(target_len + rem_len_len); - } } }