Moved connection creation sooner for better error handling in IrcServer::from_config.

This commit is contained in:
Aaron Weiss 2018-01-08 23:19:29 -05:00
parent de26b75204
commit a7ae091ff5
No known key found for this signature in database
GPG key ID: 047D32DF25DC22EF

View file

@ -700,16 +700,16 @@ impl IrcServer {
let (tx_incoming, rx_incoming) = oneshot::channel(); let (tx_incoming, rx_incoming) = oneshot::channel();
let (tx_view, rx_view) = oneshot::channel(); let (tx_view, rx_view) = oneshot::channel();
let cfg = config.clone(); let mut reactor = Core::new()?;
let handle = reactor.handle();
// Attempting to connect here (as opposed to on the thread) allows more errors to happen
// immediately, rather than to occur as panics on the thread. In particular, non-resolving
// server names, and failed SSL setups will appear here.
let conn = reactor.run(Connection::new(&config, &handle)?)?;
let _ = thread::spawn(move || { let _ = thread::spawn(move || {
let mut reactor = Core::new().unwrap(); let mut reactor = Core::new().unwrap();
// Setting up internal processing stuffs.
let handle = reactor.handle();
let conn = reactor
.run(Connection::new(&cfg, &handle).unwrap())
.unwrap();
tx_view.send(conn.log_view()).unwrap(); tx_view.send(conn.log_view()).unwrap();
let (sink, stream) = conn.split(); let (sink, stream) = conn.split();