From 66b1731f19706e43b1d78cf325067c220e7c06a6 Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Fri, 26 Oct 2018 13:27:31 -0700 Subject: [PATCH] include address in TCP connect error messages Signed-off-by: Sean McArthur --- src/transport/connection.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/transport/connection.rs b/src/transport/connection.rs index e82ed6747..1b5c6dcdc 100644 --- a/src/transport/connection.rs +++ b/src/transport/connection.rs @@ -321,10 +321,18 @@ impl Future for Connecting { type Error = io::Error; fn poll(&mut self) -> Poll { + let addr = &self.addr; loop { self.state = match &mut self.state { ConnectingState::Plaintext { connect, tls } => { - let plaintext_stream = try_ready!(connect.poll()); + let plaintext_stream = try_ready!(connect.poll().map_err(|e| { + let details = format!( + "{} (address: {})", + e, + addr, + ); + io::Error::new(e.kind(), details) + })); trace!("Connecting: state=plaintext; tls={:?};",tls); set_nodelay_or_warn(&plaintext_stream); match tls.take().expect("Polled after ready") { @@ -351,9 +359,9 @@ impl Future for Connecting { debug!( "TLS handshake with {:?} failed: {}\ -> falling back to plaintext", - self.addr, e, + addr, e, ); - let connect = TcpStream::connect(&self.addr); + let connect = TcpStream::connect(addr); // TODO: emit a `HandshakeFailed` telemetry event. let reason = tls::ReasonForNoTls::HandshakeFailed; // Reset self to try the plaintext connection.