Skip to content

Commit 70f1ffe

Browse files
committed
feat(nom5): remove remaining panic!
1 parent cae165b commit 70f1ffe

File tree

7 files changed

+37
-29
lines changed

7 files changed

+37
-29
lines changed

src/toxcore/dht/codec.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,10 @@ impl Decoder for DhtCodec {
139139
let (_, kind) = error;
140140
Err(DecodeError::deserialize(kind, buf.to_vec()))
141141
},
142-
Err(Err::Failure(e)) => panic!("Packet deserialize failed with unrecoverable error: {:?}", e),
142+
Err(Err::Failure(error)) => {
143+
let (_, kind) = error;
144+
Err(DecodeError::deserialize(kind, buf.to_vec()))
145+
},
143146
Ok((_, packet)) => {
144147
// Add 1 to incoming counter
145148
self.stats.counters.increase_incoming();

src/toxcore/dht/daemon_state.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,10 @@ impl DaemonState {
9595
let (_, kind) = error;
9696
return Either::A(future::err(DeserializeError::deserialize(kind, serialized_data.to_vec())))
9797
},
98-
Err(Err::Failure(e)) => panic!("DhtState deserialize failed with unrecoverable error: {:?}", e),
98+
Err(Err::Failure(error)) => {
99+
let (_, kind) = error;
100+
return Either::A(future::err(DeserializeError::deserialize(kind, serialized_data.to_vec())))
101+
},
99102
Ok((_, DhtState(nodes))) => {
100103
nodes
101104
}
@@ -155,14 +158,14 @@ mod tests {
155158
let serialized_vec = DaemonState::serialize_old(&alice);
156159
let serialized_len = serialized_vec.len();
157160
let res = DaemonState::deserialize_old(&alice, &serialized_vec[..serialized_len - 1]).wait();
158-
assert!(res.is_err());
159-
assert_eq!(*res.err().unwrap().kind(), DeserializeErrorKind::IncompleteData { needed: Needed::Size(39), data: serialized_vec[..serialized_len - 1].to_vec() });
161+
let error = res.err().unwrap();
162+
assert_eq!(*error.kind(), DeserializeErrorKind::Deserialize { error: NomErrorKind::Eof, data: serialized_vec[..serialized_len - 1].to_vec() });
160163

161164
// test with serialized data corrupted
162165
let serialized_vec = [42; 10];
163166
let res = DaemonState::deserialize_old(&alice, &serialized_vec).wait();
164-
assert!(res.is_err());
165-
assert_eq!(*res.err().unwrap().kind(), DeserializeErrorKind::Deserialize { error: NomErrorKind::Tag, data: serialized_vec.to_vec() });
167+
let error = res.err().unwrap();
168+
assert_eq!(*error.kind(), DeserializeErrorKind::Deserialize { error: NomErrorKind::Tag, data: serialized_vec.to_vec() });
166169

167170
// test with empty close list
168171
alice.close_nodes.write().remove(&pk_org);

src/toxcore/dht/packet/errors.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,26 +91,26 @@ impl From<GetPayloadError> for IoError {
9191

9292
#[cfg(test)]
9393
mod tests {
94-
// use super::*;
95-
/*
94+
use super::*;
95+
use nom::Needed;
96+
9697
#[test]
9798
fn get_payload_error() {
98-
let error = GetPayloadError::deserialize(NomErrorKind::Eof, vec![1, 2, 3, 4]);
99+
let error = GetPayloadError::deserialize(Err::Error((&[], ErrorKind::Eof)), vec![1, 2, 3, 4]);
99100
assert!(error.cause().is_none());
100101
assert!(error.backtrace().is_some());
101-
assert_eq!(format!("{}", error), "Deserialize payload error: Eof, data: [1, 2, 3, 4]".to_owned());
102+
assert_eq!(format!("{}", error), "Deserialize payload error: Error((\"\", Eof)), data: [1, 2, 3, 4]".to_owned());
102103
}
103104

104105
#[test]
105106
fn get_payload_error_kind() {
106107
let decrypt = GetPayloadErrorKind::Decrypt;
107108
assert_eq!(format!("{}", decrypt), "Decrypt payload error".to_owned());
108109

109-
let incomplete = GetPayloadErrorKind::IncompletePayload { needed: Needed::Size(5), payload: vec![1, 2, 3, 4] };
110-
assert_eq!(format!("{}", incomplete), "Bytes of payload should not be incomplete: Size(5), data: [1, 2, 3, 4]".to_owned());
110+
let incomplete = GetPayloadErrorKind::Deserialize { error: Err::Incomplete(Needed::Size(5)), payload: vec![1, 2, 3, 4] };
111+
assert_eq!(format!("{}", incomplete), "Deserialize payload error: Incomplete(Size(5)), data: [1, 2, 3, 4]".to_owned());
111112

112-
let deserialize = GetPayloadErrorKind::Deserialize { error: NomErrorKind::Eof, payload: vec![1, 2, 3, 4] };
113-
assert_eq!(format!("{}", deserialize), "Deserialize payload error: Eof, data: [1, 2, 3, 4]".to_owned());
113+
let deserialize = GetPayloadErrorKind::Deserialize { error: Err::Error(("".to_owned(), ErrorKind::Eof)), payload: vec![1, 2, 3, 4] };
114+
assert_eq!(format!("{}", deserialize), "Deserialize payload error: Error((\"\", Eof)), data: [1, 2, 3, 4]".to_owned());
114115
}
115-
*/
116116
}

src/toxcore/onion/packet/mod.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ use crate::toxcore::crypto_core::*;
3434
use crate::toxcore::dht::packed_node::PackedNode;
3535
use crate::toxcore::ip_port::*;
3636

37-
use nom::{Needed, Err,
37+
use nom::{Err,
3838
number::complete::le_u8,
3939
combinator::rest,
4040
};
@@ -138,10 +138,6 @@ impl OnionReturn {
138138
Error::new(ErrorKind::Other, "OnionReturn decrypt error.")
139139
})?;
140140
match OnionReturn::inner_from_bytes(&decrypted) {
141-
Err(Err::Incomplete(Needed::Unknown)) => {
142-
Err(Error::new(ErrorKind::Other,
143-
format!("Inner onion return deserialize error: Needed::Unknown")))
144-
},
145141
Err(Err::Incomplete(e)) => {
146142
Err(Error::new(ErrorKind::Other,
147143
format!("Inner onion return deserialize error: {:?}", e)))
@@ -150,7 +146,10 @@ impl OnionReturn {
150146
Err(Error::new(ErrorKind::Other,
151147
format!("Inner onion return deserialize error: {:?}", e)))
152148
},
153-
Err(Err::Failure(e)) => panic!("Inner onion return deserialize failed with unrecoverable error: {:?}", e),
149+
Err(Err::Failure(e)) => {
150+
Err(Error::new(ErrorKind::Other,
151+
format!("Inner onion return deserialize error: {:?}", e)))
152+
},
154153
Ok((_, inner)) => {
155154
Ok(inner)
156155
}

src/toxcore/state_format/old.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ impl FromBytes for DhtState {
141141
num_of_bytes: le_u32 >>
142142
verify!(le_u16, |value| *value == DHT_SECTION_TYPE) >> // check DHT section type
143143
verify!(le_u16, |value| *value == DHT_2ND_MAGICAL) >> // check whether yet another magic number matches
144-
nodes: flat_map!(take!(num_of_bytes), many0!(PackedNode::from_bytes)) >>
144+
nodes: flat_map!(take(num_of_bytes), many0!(PackedNode::from_bytes)) >>
145145
(DhtState(nodes))
146146
));
147147
}
@@ -349,14 +349,14 @@ pub struct FriendState {
349349
friend_status: FriendStatus,
350350
pk: PublicKey,
351351
/// Friend request message that is being sent to friend.
352-
pub fr_msg: Vec<u8>,
352+
fr_msg: Vec<u8>,
353353
/// Friend's name.
354-
pub name: Name,
354+
name: Name,
355355
status_msg: StatusMsg,
356356
user_status: UserWorkingStatus,
357357
nospam: NoSpam,
358358
/// Time when friend was last seen online.
359-
pub last_seen: u64,
359+
last_seen: u64,
360360
}
361361

362362
/// Number of bytes of serialized [`FriendState`](./struct.FriendState.html).

src/toxcore/tcp/codec.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ impl Decoder for Codec {
113113
let (consumed, encrypted_packet) = match EncryptedPacket::from_bytes(buf) {
114114
Err(Err::Incomplete(_)) => return Ok(None),
115115
Err(Err::Error(_)) => return Ok(None),
116-
Err(Err::Failure(e)) => panic!("EncryptedPacket deserialize failed with unrecoverable error: {:?}", e),
116+
Err(Err::Failure(_)) => return Ok(None),
117117
Ok((i, encrypted_packet)) => {
118118
(buf.offset(i), encrypted_packet)
119119
}
@@ -130,7 +130,10 @@ impl Decoder for Codec {
130130
let (_, kind) = error;
131131
Err(DecodeError::DeserializeDecryptedError { error: kind, packet: decrypted_data })
132132
},
133-
Err(Err::Failure(e)) => panic!("Packet deserialize failed with unrecoverable error: {:?}", e),
133+
Err(Err::Failure(error)) => {
134+
let (_, kind) = error;
135+
Err(DecodeError::DeserializeDecryptedError { error: kind, packet: decrypted_data })
136+
},
134137
Ok((_i, packet)) => {
135138
// Add 1 to incoming counter
136139
self.stats.counters.increase_incoming();

src/toxcore/tcp/handshake/codec.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ impl Decoder for ClientHandshakeCodec {
2020
let (consumed, handshake) = match ClientHandshake::from_bytes(buf) {
2121
Err(Err::Incomplete(_)) => return Ok(None),
2222
Err(Err::Error(_)) => unreachable!("ClientHandshake cannot be deserialized with error"),
23-
Err(Err::Failure(e)) => panic!("ClientHandshake deserialize failed with unrecoverable error: {:?}", e),
23+
Err(Err::Failure(_)) => unreachable!("ClientHandshake cannot be deserialized with error"),
2424
Ok((i, handshake)) => {
2525
(buf.offset(i), handshake)
2626
}
@@ -58,7 +58,7 @@ impl Decoder for ServerHandshakeCodec {
5858
let (consumed, handshake) = match ServerHandshake::from_bytes(buf) {
5959
Err(Err::Incomplete(_)) => return Ok(None),
6060
Err(Err::Error(_)) => unreachable!("ClientHandshake cannot be deserialized with error"),
61-
Err(Err::Failure(e)) => panic!("ClientHandshake deserialize failed with unrecoverable error: {:?}", e),
61+
Err(Err::Failure(_)) => unreachable!("ClientHandshake cannot be deserialized with error"),
6262
Ok((i, handshake)) => {
6363
(buf.offset(i), handshake)
6464
}

0 commit comments

Comments
 (0)