include address in TCP connect error messages

Signed-off-by: Sean McArthur <sean@buoyant.io>
This commit is contained in:
Sean McArthur 2018-10-26 13:27:31 -07:00 committed by Sean McArthur
parent 68ec7f1488
commit 66b1731f19
1 changed files with 11 additions and 3 deletions

View File

@ -321,10 +321,18 @@ impl Future for Connecting {
type Error = io::Error;
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
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.