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

Commit 690dd9a

Browse files
author
Roman
authored
Merge pull request #30 from tox-rs/update_core
Update tox core version
2 parents bd308b6 + cce7e96 commit 690dd9a

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ mod cli_config;
1919
mod motd;
2020

2121
use std::fs::{File, OpenOptions};
22-
use std::io::{Error, ErrorKind, Read, Write};
22+
use std::io::{ErrorKind, Read, Write};
2323
use std::net::{IpAddr, SocketAddr};
2424
#[cfg(unix)]
2525
use std::os::unix::fs::OpenOptionsExt;
2626

27+
use failure::Error;
2728
use futures::sync::mpsc;
2829
use futures::{future, Future, Sink, Stream};
2930
use futures::future::Either;
@@ -167,7 +168,7 @@ fn run_tcp(cli_config: &CliConfig, dht_sk: SecretKey, tcp_onion: TcpOnion) -> im
167168
// If TCP address is not specified don't start TCP server and only drop
168169
// all onion packets from DHT server
169170
let tcp_onion_future = tcp_onion.rx
170-
.map_err(|()| Error::from(ErrorKind::UnexpectedEof))
171+
.map_err(|()| unreachable!("rx can't fail"))
171172
.for_each(|_| future::ok(()));
172173
return Either::A(tcp_onion_future)
173174
}
@@ -181,14 +182,15 @@ fn run_tcp(cli_config: &CliConfig, dht_sk: SecretKey, tcp_onion: TcpOnion) -> im
181182
let dht_sk = dht_sk.clone();
182183
let listener = TcpListener::bind(&addr).expect("Failed to bind TCP listener");
183184
tcp_server_c.run(listener, dht_sk)
185+
.map_err(Error::from)
184186
});
185187

186188
let tcp_server_future = future::select_all(tcp_server_futures)
187189
.map(|_| ())
188190
.map_err(|(e, _, _)| e);
189191

190192
let tcp_onion_future = tcp_onion.rx
191-
.map_err(|()| Error::from(ErrorKind::UnexpectedEof))
193+
.map_err(|()| unreachable!("rx can't fail"))
192194
.for_each(move |(onion_response, addr)|
193195
tcp_server.handle_udp_onion_response(addr.ip(), addr.port(), onion_response).or_else(|err| {
194196
warn!("Failed to handle UDP onion response: {:?}", err);
@@ -210,7 +212,7 @@ fn run_udp(cli_config: &CliConfig, dht_pk: PublicKey, dht_sk: &SecretKey, udp_on
210212
// If UDP address is not specified don't start DHT server and only drop
211213
// all onion packets from TCP server
212214
let udp_onion_future = udp_onion.rx
213-
.map_err(|()| Error::from(ErrorKind::UnexpectedEof))
215+
.map_err(|()| unreachable!("rx can't fail"))
214216
.for_each(|_| future::ok(()));
215217
return Either::A(udp_onion_future)
216218
};
@@ -222,9 +224,11 @@ fn run_udp(cli_config: &CliConfig, dht_pk: PublicKey, dht_sk: &SecretKey, udp_on
222224
let (tx, rx) = mpsc::unbounded();
223225

224226
let lan_discovery_future = if cli_config.lan_discovery_enabled {
225-
LanDiscoverySender::new(tx.clone(), dht_pk, udp_addr.is_ipv6()).run()
227+
Either::A(LanDiscoverySender::new(tx.clone(), dht_pk, udp_addr.is_ipv6())
228+
.run()
229+
.map_err(Error::from))
226230
} else {
227-
Box::new(future::empty())
231+
Either::B(future::empty())
228232
};
229233

230234
let mut server = UdpServer::new(tx, dht_pk, dht_sk.clone());
@@ -236,7 +240,7 @@ fn run_udp(cli_config: &CliConfig, dht_pk: PublicKey, dht_sk: &SecretKey, udp_on
236240

237241
let server_c = server.clone();
238242
let udp_onion_future = udp_onion.rx
239-
.map_err(|()| Error::from(ErrorKind::UnexpectedEof))
243+
.map_err(|()| unreachable!("rx can't fail"))
240244
.for_each(move |(onion_request, addr)|
241245
server_c.handle_tcp_onion_request(onion_request, addr).or_else(|err| {
242246
warn!("Failed to handle TCP onion request: {:?}", err);
@@ -255,7 +259,7 @@ fn run_udp(cli_config: &CliConfig, dht_pk: PublicKey, dht_sk: &SecretKey, udp_on
255259
// The server task asynchronously iterates over and processes each
256260
// incoming packet.
257261
let server_c = server.clone();
258-
let network_reader = stream.then(future::ok).filter(|event| // TODO: use filter_map from futures 0.2 to avoid next `expect`
262+
let network_reader = stream.then(future::ok).filter(|event|
259263
match event {
260264
Ok(_) => true,
261265
Err(ref e) => {
@@ -264,18 +268,16 @@ fn run_udp(cli_config: &CliConfig, dht_pk: PublicKey, dht_sk: &SecretKey, udp_on
264268
e.as_fail().downcast_ref::<DecodeError>().is_none()
265269
}
266270
}
267-
).then(|event: Result<_, ()>|
268-
event.expect("always ok")
269-
).for_each(move |(packet, addr)| {
271+
).and_then(|event| event).for_each(move |(packet, addr)| {
270272
trace!("Received packet {:?}", packet);
271273
server_c.handle_packet(packet, addr).or_else(|err| {
272274
error!("Failed to handle packet: {:?}", err);
273275
future::ok(())
274276
})
275-
}).map_err(|e| Error::new(ErrorKind::Other, e.compat()));
277+
});
276278

277279
let network_writer = rx
278-
.map_err(|()| Error::new(ErrorKind::Other, "rx error"))
280+
.map_err(|()| unreachable!("rx can't fail"))
279281
// filter out IPv6 packets if node is running in IPv4 mode
280282
.filter(move |&(ref _packet, addr)| !(udp_addr.is_ipv4() && addr.is_ipv6()))
281283
.fold(sink, move |sink, (packet, mut addr)| {
@@ -285,7 +287,7 @@ fn run_udp(cli_config: &CliConfig, dht_pk: PublicKey, dht_sk: &SecretKey, udp_on
285287
}
286288
}
287289
trace!("Sending packet {:?} to {:?}", packet, addr);
288-
sink.send((packet, addr)).map_err(|e| Error::new(ErrorKind::Other, e.compat()))
290+
sink.send((packet, addr))
289291
})
290292
// drop sink when rx stream is exhausted
291293
.map(|_sink| ());
@@ -294,7 +296,7 @@ fn run_udp(cli_config: &CliConfig, dht_pk: PublicKey, dht_sk: &SecretKey, udp_on
294296

295297
Either::B(network_reader
296298
.select(network_writer).map(|_| ()).map_err(|(e, _)| e)
297-
.select(server.run()).map(|_| ()).map_err(|(e, _)| e)
299+
.select(server.run().map_err(Error::from)).map(|_| ()).map_err(|(e, _)| e)
298300
.select(lan_discovery_future).map(|_| ()).map_err(|(e, _)| e)
299301
.join(udp_onion_future).map(|_| ()))
300302
}

0 commit comments

Comments
 (0)