Skip to content

Commit fc1d699

Browse files
committed
refactor(client): add socket addr to ConnectError
1 parent 0959d46 commit fc1d699

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/client/legacy/connect/http.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,12 +490,14 @@ fn get_host_port<'u>(config: &Config, dst: &'u Uri) -> Result<(&'u str, u16), Co
490490
if dst.scheme() != Some(&Scheme::HTTP) {
491491
return Err(ConnectError {
492492
msg: INVALID_NOT_HTTP.into(),
493+
addr: None,
493494
cause: None,
494495
});
495496
}
496497
} else if dst.scheme().is_none() {
497498
return Err(ConnectError {
498499
msg: INVALID_MISSING_SCHEME.into(),
500+
addr: None,
499501
cause: None,
500502
});
501503
}
@@ -505,6 +507,7 @@ fn get_host_port<'u>(config: &Config, dst: &'u Uri) -> Result<(&'u str, u16), Co
505507
None => {
506508
return Err(ConnectError {
507509
msg: INVALID_MISSING_HOST.into(),
510+
addr: None,
508511
cause: None,
509512
})
510513
}
@@ -643,6 +646,7 @@ impl<R: Resolve> Future for HttpConnecting<R> {
643646
// Not publicly exported (so missing_docs doesn't trigger).
644647
pub struct ConnectError {
645648
msg: &'static str,
649+
addr: Option<SocketAddr>,
646650
cause: Option<Box<dyn StdError + Send + Sync>>,
647651
}
648652

@@ -653,6 +657,7 @@ impl ConnectError {
653657
{
654658
ConnectError {
655659
msg,
660+
addr: None,
656661
cause: Some(cause.into()),
657662
}
658663
}
@@ -676,6 +681,9 @@ impl fmt::Debug for ConnectError {
676681
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
677682
let mut b = f.debug_tuple("ConnectError");
678683
b.field(&self.msg);
684+
if let Some(ref addr) = self.addr {
685+
b.field(addr);
686+
}
679687
if let Some(ref cause) = self.cause {
680688
b.field(cause);
681689
}
@@ -763,8 +771,9 @@ impl ConnectingTcpRemote {
763771
debug!("connected to {}", addr);
764772
return Ok(tcp);
765773
}
766-
Err(e) => {
774+
Err(mut e) => {
767775
trace!("connect error for {}: {:?}", addr, e);
776+
e.addr = Some(addr);
768777
// only return the first error, we assume it's the most relevant
769778
if err.is_none() {
770779
err = Some(e);

0 commit comments

Comments
 (0)