mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
style(p2p): get rid of expects (#164)
* style(p2p): get rid of expects * test: add test
This commit is contained in:
@ -687,23 +687,26 @@ impl Encodable for DisconnectReason {
|
|||||||
|
|
||||||
impl Decodable for DisconnectReason {
|
impl Decodable for DisconnectReason {
|
||||||
fn decode(buf: &mut &[u8]) -> Result<Self, DecodeError> {
|
fn decode(buf: &mut &[u8]) -> Result<Self, DecodeError> {
|
||||||
let first = *buf.first().expect("disconnect reason should have at least 1 byte");
|
if buf.len() < 3 {
|
||||||
buf.advance(1);
|
return Err(DecodeError::Custom("disconnect reason should have 3 bytes"))
|
||||||
|
}
|
||||||
|
|
||||||
|
let first = buf[0];
|
||||||
if first != 0x01 {
|
if first != 0x01 {
|
||||||
return Err(DecodeError::Custom("invalid disconnect reason - invalid snappy header"))
|
return Err(DecodeError::Custom("invalid disconnect reason - invalid snappy header"))
|
||||||
}
|
}
|
||||||
|
|
||||||
let second = *buf.first().expect("disconnect reason should have at least 2 bytes");
|
let second = buf[1];
|
||||||
buf.advance(1);
|
|
||||||
if second != 0x00 {
|
if second != 0x00 {
|
||||||
// TODO: make sure this error message is correct
|
// TODO: make sure this error message is correct
|
||||||
return Err(DecodeError::Custom("invalid disconnect reason - invalid snappy header"))
|
return Err(DecodeError::Custom("invalid disconnect reason - invalid snappy header"))
|
||||||
}
|
}
|
||||||
|
|
||||||
let reason = *buf.first().expect("disconnect reason should have 3 bytes");
|
let reason = buf[2];
|
||||||
buf.advance(1);
|
let reason = DisconnectReason::try_from(reason)
|
||||||
DisconnectReason::try_from(reason)
|
.map_err(|_| DecodeError::Custom("unknown disconnect reason"))?;
|
||||||
.map_err(|_| DecodeError::Custom("unknown disconnect reason"))
|
buf.advance(3);
|
||||||
|
Ok(reason)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -952,6 +955,11 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_reason_too_short() {
|
||||||
|
assert!(DisconnectReason::decode(&mut &[0u8][..]).is_err())
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn disconnect_encoding_length() {
|
fn disconnect_encoding_length() {
|
||||||
let all_reasons = vec![
|
let all_reasons = vec![
|
||||||
|
|||||||
Reference in New Issue
Block a user