Skip to content
This repository was archived by the owner on Aug 23, 2022. It is now read-only.

Commit b8d6264

Browse files
author
Rusty Rain
authored
Merge pull request #7 from algesten/anyhow
Refactor out use of anyhow
2 parents 58ab628 + f818793 commit b8d6264

22 files changed

+160
-123
lines changed

Cargo.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ repository = "https://github.com/webrtc-rs/stun"
1212
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1313

1414
[dependencies]
15-
util = { package = "webrtc-util", version = "0.4.3", default-features = false, features = ["conn"] }
15+
util = { package = "webrtc-util", version = "0.5.0", default-features = false, features = ["conn"] }
1616
tokio = { version = "1.12.0", features = ["full"] }
1717
lazy_static = "1.4.0"
1818
url = "2.2.0"
@@ -22,8 +22,7 @@ subtle = "2.1.1"
2222
crc = "2.0.0"
2323
ring = "0.16.19"
2424
md-5 = "0.9.1"
25-
thiserror = "1.0.25"
26-
anyhow = "1.0.41"
25+
thiserror = "1.0"
2726

2827
[dev-dependencies]
2928
tokio-test = "0.4"

examples/stun_client.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ use stun::agent::*;
22
use stun::client::*;
33
use stun::message::*;
44
use stun::xoraddr::*;
5+
use stun::Error;
56

6-
use anyhow::Result;
77
use clap::{App, Arg};
88
use std::sync::Arc;
99
use tokio::net::UdpSocket;
1010

1111
#[tokio::main]
12-
async fn main() -> Result<()> {
12+
async fn main() -> Result<(), Error> {
1313
let mut app = App::new("STUN Client")
1414
.version("0.1.0")
1515
.author("Rain Liu <[email protected]>")

src/addr.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use crate::attributes::*;
55
use crate::error::*;
66
use crate::message::*;
77

8-
use anyhow::Result;
98
use std::fmt;
109
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
1110

@@ -67,12 +66,12 @@ impl MappedAddress {
6766
pub fn get_from_as(&mut self, m: &Message, t: AttrType) -> Result<()> {
6867
let v = m.get(t)?;
6968
if v.len() <= 4 {
70-
return Err(Error::ErrUnexpectedEof.into());
69+
return Err(Error::ErrUnexpectedEof);
7170
}
7271

7372
let family = u16::from_be_bytes([v[0], v[1]]);
7473
if family != FAMILY_IPV6 && family != FAMILY_IPV4 {
75-
return Err(Error::new(format!("bad value {}", family)).into());
74+
return Err(Error::Other(format!("bad value {}", family)));
7675
}
7776
self.port = u16::from_be_bytes([v[2], v[3]]);
7877

src/addr/addr_test.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ fn test_mapped_address() -> Result<()> {
2525
let message = Message::new();
2626
let result = got.get_from(&message);
2727
if let Err(err) = result {
28-
assert!(
29-
Error::ErrAttributeNotFound.equal(&err),
28+
assert_eq!(
29+
Error::ErrAttributeNotFound,
30+
err,
3031
"should be not found: {}",
3132
err
3233
);
@@ -46,8 +47,9 @@ fn test_mapped_address() -> Result<()> {
4647
message.add(ATTR_MAPPED_ADDRESS, &[1, 2, 3]);
4748
let result = got.get_from(&message);
4849
if let Err(err) = result {
49-
assert!(
50-
Error::ErrUnexpectedEof.equal(&err),
50+
assert_eq!(
51+
Error::ErrUnexpectedEof,
52+
err,
5153
"<{}> should be <{}>",
5254
err,
5355
Error::ErrUnexpectedEof
@@ -85,8 +87,9 @@ fn test_mapped_address_v6() -> Result<()> {
8587
let message = Message::new();
8688
let result = got.get_from(&message);
8789
if let Err(err) = result {
88-
assert!(
89-
Error::ErrAttributeNotFound.equal(&err),
90+
assert_eq!(
91+
Error::ErrAttributeNotFound,
92+
err,
9093
"<{}> should be <{}>",
9194
err,
9295
Error::ErrAttributeNotFound,
@@ -123,8 +126,9 @@ fn test_alternate_server() -> Result<()> {
123126
let message = Message::new();
124127
let result = got.get_from(&message);
125128
if let Err(err) = result {
126-
assert!(
127-
Error::ErrAttributeNotFound.equal(&err),
129+
assert_eq!(
130+
Error::ErrAttributeNotFound,
131+
err,
128132
"<{}> should be <{}>",
129133
err,
130134
Error::ErrAttributeNotFound,
@@ -162,8 +166,9 @@ fn test_other_address() -> Result<()> {
162166
let message = Message::new();
163167
let result = got.get_from(&message);
164168
if let Err(err) = result {
165-
assert!(
166-
Error::ErrAttributeNotFound.equal(&err),
169+
assert_eq!(
170+
Error::ErrAttributeNotFound,
171+
err,
167172
"<{}> should be <{}>",
168173
err,
169174
Error::ErrAttributeNotFound,

src/agent.rs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use crate::client::ClientTransaction;
55
use crate::error::*;
66
use crate::message::*;
77

8-
use anyhow::Result;
98
use rand::Rng;
109
use std::collections::HashMap;
1110
use std::sync::Arc;
@@ -126,27 +125,27 @@ impl Agent {
126125
// provided error. Can return ErrTransactionNotExists and ErrAgentClosed.
127126
fn stop_with_error(&mut self, id: TransactionId, error: Error) -> Result<()> {
128127
if self.closed {
129-
return Err(Error::ErrAgentClosed.into());
128+
return Err(Error::ErrAgentClosed);
130129
}
131130

132131
let v = self.transactions.remove(&id);
133132
if let Some(t) = v {
134133
if let Some(handler) = &self.handler {
135134
handler.send(Event {
136135
event_type: EventType::Callback(t.id),
137-
event_body: Err(error.into()),
136+
event_body: Err(error),
138137
})?;
139138
}
140139
Ok(())
141140
} else {
142-
Err(Error::ErrTransactionNotExists.into())
141+
Err(Error::ErrTransactionNotExists)
143142
}
144143
}
145144

146145
// process incoming message, synchronously passing it to handler.
147146
fn process(&mut self, message: Message) -> Result<()> {
148147
if self.closed {
149-
return Err(Error::ErrAgentClosed.into());
148+
return Err(Error::ErrAgentClosed);
150149
}
151150

152151
self.transactions.remove(&message.transaction_id);
@@ -167,13 +166,13 @@ impl Agent {
167166
// closed state.
168167
fn close(&mut self) -> Result<()> {
169168
if self.closed {
170-
return Err(Error::ErrAgentClosed.into());
169+
return Err(Error::ErrAgentClosed);
171170
}
172171

173172
for id in self.transactions.keys() {
174173
let e = Event {
175174
event_type: EventType::Callback(*id),
176-
event_body: Err(Error::ErrAgentClosed.into()),
175+
event_body: Err(Error::ErrAgentClosed),
177176
};
178177
if let Some(handler) = &self.handler {
179178
handler.send(e)?;
@@ -192,10 +191,10 @@ impl Agent {
192191
// Agent handler is guaranteed to be eventually called.
193192
fn start(&mut self, id: TransactionId, deadline: Instant) -> Result<()> {
194193
if self.closed {
195-
return Err(Error::ErrAgentClosed.into());
194+
return Err(Error::ErrAgentClosed);
196195
}
197196
if self.transactions.contains_key(&id) {
198-
return Err(Error::ErrTransactionExists.into());
197+
return Err(Error::ErrTransactionExists);
199198
}
200199

201200
self.transactions
@@ -220,7 +219,7 @@ impl Agent {
220219
// Doing nothing if agent is closed.
221220
// All transactions should be already closed
222221
// during Close() call.
223-
return Err(Error::ErrAgentClosed.into());
222+
return Err(Error::ErrAgentClosed);
224223
}
225224

226225
let mut to_remove: Vec<TransactionId> = Vec::with_capacity(AGENT_COLLECT_CAP);
@@ -242,7 +241,7 @@ impl Agent {
242241
for id in to_remove {
243242
let event = Event {
244243
event_type: EventType::Callback(id),
245-
event_body: Err(Error::ErrTransactionTimeOut.into()),
244+
event_body: Err(Error::ErrTransactionTimeOut),
246245
};
247246
if let Some(handler) = &self.handler {
248247
handler.send(event)?;
@@ -255,7 +254,7 @@ impl Agent {
255254
// set_handler sets agent handler to h.
256255
fn set_handler(&mut self, h: Handler) -> Result<()> {
257256
if self.closed {
258-
return Err(Error::ErrAgentClosed.into());
257+
return Err(Error::ErrAgentClosed);
259258
}
260259
self.handler = h;
261260

@@ -273,7 +272,7 @@ impl Agent {
273272
};
274273

275274
if let Err(err) = result {
276-
if Error::ErrAgentClosed.equal(&err) {
275+
if Error::ErrAgentClosed == err {
277276
break;
278277
}
279278
}

src/agent/agent_test.rs

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@ async fn test_agent_process() -> Result<()> {
5454

5555
let result = a.process(m);
5656
if let Err(err) = result {
57-
assert!(
58-
Error::ErrAgentClosed.equal(&err),
57+
assert_eq!(
58+
Error::ErrAgentClosed,
59+
err,
5960
"closed agent should return <{}>, but got <{}>",
6061
Error::ErrAgentClosed,
6162
err,
@@ -76,8 +77,9 @@ fn test_agent_start() -> Result<()> {
7677

7778
let result = a.start(id, deadline);
7879
if let Err(err) = result {
79-
assert!(
80-
Error::ErrTransactionExists.equal(&err),
80+
assert_eq!(
81+
Error::ErrTransactionExists,
82+
err,
8183
"duplicate start should return <{}>, got <{}>",
8284
Error::ErrTransactionExists,
8385
err,
@@ -90,8 +92,9 @@ fn test_agent_start() -> Result<()> {
9092
let id = TransactionId::new();
9193
let result = a.start(id, deadline);
9294
if let Err(err) = result {
93-
assert!(
94-
Error::ErrAgentClosed.equal(&err),
95+
assert_eq!(
96+
Error::ErrAgentClosed,
97+
err,
9598
"start on closed agent should return <{}>, got <{}>",
9699
Error::ErrAgentClosed,
97100
err,
@@ -102,8 +105,9 @@ fn test_agent_start() -> Result<()> {
102105

103106
let result = a.set_handler(noop_handler());
104107
if let Err(err) = result {
105-
assert!(
106-
Error::ErrAgentClosed.equal(&err),
108+
assert_eq!(
109+
Error::ErrAgentClosed,
110+
err,
107111
"SetHandler on closed agent should return <{}>, got <{}>",
108112
Error::ErrAgentClosed,
109113
err,
@@ -122,8 +126,9 @@ async fn test_agent_stop() -> Result<()> {
122126

123127
let result = a.stop(TransactionId::default());
124128
if let Err(err) = result {
125-
assert!(
126-
Error::ErrTransactionNotExists.equal(&err),
129+
assert_eq!(
130+
Error::ErrTransactionNotExists,
131+
err,
127132
"unexpected error: {}, should be {}",
128133
Error::ErrTransactionNotExists,
129134
err,
@@ -143,7 +148,7 @@ async fn test_agent_stop() -> Result<()> {
143148
tokio::select! {
144149
evt = handler_rx.recv() => {
145150
if let Err(err) = evt.unwrap().event_body{
146-
assert!(Error::ErrTransactionStopped.equal(&err),
151+
assert_eq!(Error::ErrTransactionStopped,err,
147152
"unexpected error: {}, should be {}",
148153
err, Error::ErrTransactionStopped);
149154
}else{
@@ -157,8 +162,9 @@ async fn test_agent_stop() -> Result<()> {
157162

158163
let result = a.close();
159164
if let Err(err) = result {
160-
assert!(
161-
Error::ErrAgentClosed.equal(&err),
165+
assert_eq!(
166+
Error::ErrAgentClosed,
167+
err,
162168
"a.Close returned {} instead of {}",
163169
Error::ErrAgentClosed,
164170
err,
@@ -169,8 +175,9 @@ async fn test_agent_stop() -> Result<()> {
169175

170176
let result = a.stop(TransactionId::default());
171177
if let Err(err) = result {
172-
assert!(
173-
Error::ErrAgentClosed.equal(&err),
178+
assert_eq!(
179+
Error::ErrAgentClosed,
180+
err,
174181
"unexpected error: {}, should be {}",
175182
Error::ErrAgentClosed,
176183
err,

src/attributes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#[cfg(test)]
22
mod attributes_test;
33

4+
use crate::error::*;
45
use crate::message::*;
56

6-
use anyhow::Result;
77
use std::fmt;
88

99
// Attributes is list of message attributes.

src/checks.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
use crate::attributes::*;
22
use crate::error::*;
33

4-
use anyhow::Result;
54
use subtle::ConstantTimeEq;
65

76
// check_size returns ErrAttrSizeInvalid if got is not equal to expected.
87
pub fn check_size(_at: AttrType, got: usize, expected: usize) -> Result<()> {
98
if got == expected {
109
Ok(())
1110
} else {
12-
Err(Error::ErrAttributeSizeInvalid.into())
11+
Err(Error::ErrAttributeSizeInvalid)
1312
}
1413
}
1514

1615
// is_attr_size_invalid returns true if error means that attribute size is invalid.
17-
pub fn is_attr_size_invalid(err: &anyhow::Error) -> bool {
18-
Error::ErrAttributeSizeInvalid.equal(err)
16+
pub fn is_attr_size_invalid(err: &Error) -> bool {
17+
Error::ErrAttributeSizeInvalid == *err
1918
}
2019

2120
pub(crate) fn check_hmac(got: &[u8], expected: &[u8]) -> Result<()> {
2221
if got.ct_eq(expected).unwrap_u8() != 1 {
23-
Err(Error::ErrIntegrityMismatch.into())
22+
Err(Error::ErrIntegrityMismatch)
2423
} else {
2524
Ok(())
2625
}
@@ -30,7 +29,7 @@ pub(crate) fn check_fingerprint(got: u32, expected: u32) -> Result<()> {
3029
if got == expected {
3130
Ok(())
3231
} else {
33-
Err(Error::ErrFingerprintMismatch.into())
32+
Err(Error::ErrFingerprintMismatch)
3433
}
3534
}
3635

@@ -39,11 +38,11 @@ pub fn check_overflow(_at: AttrType, got: usize, max: usize) -> Result<()> {
3938
if got <= max {
4039
Ok(())
4140
} else {
42-
Err(Error::ErrAttributeSizeOverflow.into())
41+
Err(Error::ErrAttributeSizeOverflow)
4342
}
4443
}
4544

4645
// is_attr_size_overflow returns true if error means that attribute size is too big.
47-
pub fn is_attr_size_overflow(err: &anyhow::Error) -> bool {
48-
Error::ErrAttributeSizeOverflow.equal(err)
46+
pub fn is_attr_size_overflow(err: &Error) -> bool {
47+
Error::ErrAttributeSizeOverflow == *err
4948
}

0 commit comments

Comments
 (0)