@@ -215,8 +215,17 @@ impl HttpAccessConnHandler {
215215 } ;
216216
217217 // Establish proxy chain
218- let proxy_chain = conn_selector. choose_chain ( ) ;
219- let upstream = establish ( & proxy_chain. chain , addr. clone ( ) , & self . stream_context ) . await ?;
218+ let ( chain, payload_crypto) = match conn_selector. as_ref ( ) {
219+ common:: route:: ConnSelector :: Empty => ( [ ] . into ( ) , None ) ,
220+ common:: route:: ConnSelector :: Some ( conn_selector1) => {
221+ let proxy_chain = conn_selector1. choose_chain ( ) ;
222+ (
223+ proxy_chain. chain . clone ( ) ,
224+ proxy_chain. payload_crypto . clone ( ) ,
225+ )
226+ }
227+ } ;
228+ let upstream = establish ( & chain, addr. clone ( ) , & self . stream_context ) . await ?;
220229
221230 let session_guard = self . stream_context . session_table . as_ref ( ) . map ( |s| {
222231 s. set_scope_owned ( Session {
@@ -231,7 +240,7 @@ impl HttpAccessConnHandler {
231240 dn_gauge : None ,
232241 } )
233242 } ) ;
234- let res = match & proxy_chain . payload_crypto {
243+ let res = match & payload_crypto {
235244 Some ( crypto) => {
236245 // Establish encrypted stream
237246 let ( r, w) = tokio:: io:: split ( upstream. stream ) ;
@@ -502,13 +511,17 @@ impl HttpConnect {
502511 address : address. clone ( ) ,
503512 stream_type : ConcreteStreamType :: Tcp . to_string ( ) . into ( ) ,
504513 } ;
505- let proxy_chain = self . conn_selector . choose_chain ( ) ;
506- let upstream = establish (
507- & proxy_chain. chain ,
508- destination. clone ( ) ,
509- & self . stream_context ,
510- )
511- . await ?;
514+ let ( chain, payload_crypto) = match & self . conn_selector . as_ref ( ) {
515+ common:: route:: ConnSelector :: Empty => ( [ ] . into ( ) , None ) ,
516+ common:: route:: ConnSelector :: Some ( conn_selector1) => {
517+ let proxy_chain = conn_selector1. choose_chain ( ) ;
518+ (
519+ proxy_chain. chain . clone ( ) ,
520+ proxy_chain. payload_crypto . clone ( ) ,
521+ )
522+ }
523+ } ;
524+ let upstream = establish ( & chain, destination. clone ( ) , & self . stream_context ) . await ?;
512525
513526 let conn_context = ConnContext {
514527 start : ( std:: time:: Instant :: now ( ) , std:: time:: SystemTime :: now ( ) ) ,
@@ -523,7 +536,7 @@ impl HttpConnect {
523536 let io_copy = CopyBidirectional {
524537 downstream : TokioIo :: new ( upgraded) ,
525538 upstream : upstream. stream ,
526- payload_crypto : proxy_chain . payload_crypto . clone ( ) ,
539+ payload_crypto,
527540 speed_limiter : self . speed_limiter . clone ( ) ,
528541 conn_context,
529542 }
0 commit comments