@@ -56,12 +56,14 @@ async fn resolve_app_address(prefix: &str, sni: &str, compat: bool) -> Result<Ap
5656 let Some ( data) = txt_record. txt_data ( ) . first ( ) else {
5757 continue ;
5858 } ;
59- return AppAddress :: parse ( data) . context ( "failed to parse app address" ) ;
59+ return AppAddress :: parse ( data)
60+ . with_context ( || format ! ( "failed to parse app address for {sni}" ) ) ;
6061 }
6162 } else if let Ok ( lookup) = resolver. txt_lookup ( txt_domain) . await {
6263 if let Some ( txt_record) = lookup. iter ( ) . next ( ) {
6364 if let Some ( data) = txt_record. txt_data ( ) . first ( ) {
64- return AppAddress :: parse ( data) . context ( "failed to parse app address" ) ;
65+ return AppAddress :: parse ( data)
66+ . with_context ( || format ! ( "failed to parse app address for {sni}" ) ) ;
6567 }
6668 }
6769 }
@@ -70,15 +72,17 @@ async fn resolve_app_address(prefix: &str, sni: &str, compat: bool) -> Result<Ap
7072 if let Some ( ( _, parent) ) = sni. split_once ( '.' ) {
7173 let wildcard_domain = format ! ( "{prefix}-wildcard.{parent}" ) ;
7274 let lookup = resolver
73- . txt_lookup ( wildcard_domain)
75+ . txt_lookup ( & wildcard_domain)
7476 . await
75- . context ( "failed to lookup wildcard app address" ) ?;
76- let txt_record = lookup. iter ( ) . next ( ) . context ( "no txt record found" ) ?;
77+ . with_context ( || format ! ( "failed to lookup wildcard app address for {sni} via {wildcard_domain}" ) ) ?;
78+ let txt_record = lookup. iter ( ) . next ( )
79+ . with_context ( || format ! ( "no txt record found for {sni} via {wildcard_domain}" ) ) ?;
7780 let data = txt_record
7881 . txt_data ( )
7982 . first ( )
80- . context ( "no data in txt record" ) ?;
81- return AppAddress :: parse ( data) . context ( "failed to parse app address" ) ;
83+ . with_context ( || format ! ( "no data in txt record for {sni} via {wildcard_domain}" ) ) ?;
84+ return AppAddress :: parse ( data)
85+ . with_context ( || format ! ( "failed to parse app address for {sni} via {wildcard_domain}" ) ) ;
8286 }
8387
8488 anyhow:: bail!( "failed to resolve app address for {sni}" ) ;
@@ -95,8 +99,8 @@ pub(crate) async fn proxy_with_sni(
9599 let dns_timeout = state. config . proxy . timeouts . dns_resolve ;
96100 let addr = timeout ( dns_timeout, resolve_app_address ( ns_prefix, sni, compat) )
97101 . await
98- . context ( "DNS TXT resolve timeout" ) ?
99- . context ( "failed to resolve app address" ) ?;
102+ . with_context ( || format ! ( "DNS TXT resolve timeout for {sni}" ) ) ?
103+ . with_context ( || format ! ( "failed to resolve app address for {sni}" ) ) ?;
100104 debug ! ( "target address is {}:{}" , addr. app_id, addr. port) ;
101105 proxy_to_app ( state, inbound, buffer, & addr. app_id , addr. port ) . await
102106}
0 commit comments