@@ -490,12 +490,14 @@ fn get_host_port<'u>(config: &Config, dst: &'u Uri) -> Result<(&'u str, u16), Co
490
490
if dst. scheme ( ) != Some ( & Scheme :: HTTP ) {
491
491
return Err ( ConnectError {
492
492
msg : INVALID_NOT_HTTP . into ( ) ,
493
+ addr : None ,
493
494
cause : None ,
494
495
} ) ;
495
496
}
496
497
} else if dst. scheme ( ) . is_none ( ) {
497
498
return Err ( ConnectError {
498
499
msg : INVALID_MISSING_SCHEME . into ( ) ,
500
+ addr : None ,
499
501
cause : None ,
500
502
} ) ;
501
503
}
@@ -505,6 +507,7 @@ fn get_host_port<'u>(config: &Config, dst: &'u Uri) -> Result<(&'u str, u16), Co
505
507
None => {
506
508
return Err ( ConnectError {
507
509
msg : INVALID_MISSING_HOST . into ( ) ,
510
+ addr : None ,
508
511
cause : None ,
509
512
} )
510
513
}
@@ -643,6 +646,7 @@ impl<R: Resolve> Future for HttpConnecting<R> {
643
646
// Not publicly exported (so missing_docs doesn't trigger).
644
647
pub struct ConnectError {
645
648
msg : & ' static str ,
649
+ addr : Option < SocketAddr > ,
646
650
cause : Option < Box < dyn StdError + Send + Sync > > ,
647
651
}
648
652
@@ -653,6 +657,7 @@ impl ConnectError {
653
657
{
654
658
ConnectError {
655
659
msg,
660
+ addr : None ,
656
661
cause : Some ( cause. into ( ) ) ,
657
662
}
658
663
}
@@ -676,6 +681,9 @@ impl fmt::Debug for ConnectError {
676
681
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
677
682
let mut b = f. debug_tuple ( "ConnectError" ) ;
678
683
b. field ( & self . msg ) ;
684
+ if let Some ( ref addr) = self . addr {
685
+ b. field ( addr) ;
686
+ }
679
687
if let Some ( ref cause) = self . cause {
680
688
b. field ( cause) ;
681
689
}
@@ -763,8 +771,9 @@ impl ConnectingTcpRemote {
763
771
debug ! ( "connected to {}" , addr) ;
764
772
return Ok ( tcp) ;
765
773
}
766
- Err ( e) => {
774
+ Err ( mut e) => {
767
775
trace ! ( "connect error for {}: {:?}" , addr, e) ;
776
+ e. addr = Some ( addr) ;
768
777
// only return the first error, we assume it's the most relevant
769
778
if err. is_none ( ) {
770
779
err = Some ( e) ;
0 commit comments