@@ -21,8 +21,8 @@ use vey_types::acl::AclAction;
2121use vey_types:: net:: { ConnectError , Host , TcpKeepAliveConfig , UpstreamAddr } ;
2222
2323use super :: { DirectFloatBindIp , DirectFloatEscaper } ;
24- use crate :: escape:: EgressNotes ;
2524use crate :: escape:: direct_fixed:: tcp_connect:: DirectTcpConnectConfig ;
25+ use crate :: escape:: { EgressNotes , EgressSocketType } ;
2626use crate :: log:: escape:: tcp_connect:: EscapeLogForTcpConnect ;
2727use crate :: module:: tcp_connect:: {
2828 TcpConnectRemoteWrapperStats , TcpConnectResult , TcpConnectTaskConf , UnderlyingTcpConnectError ,
@@ -110,7 +110,7 @@ impl DirectFloatEscaper {
110110 task_notes : & ServerTaskNotes ,
111111 ) -> Result < ( TcpStream , DirectFloatBindIp ) , UnderlyingTcpConnectError > {
112112 let peer = SocketAddr :: new ( peer_ip, task_conf. upstream . port ( ) ) ;
113- egress_notes. next = Some ( peer) ;
113+ egress_notes. tcp . peer = Some ( peer) ;
114114
115115 let ( sock, bind) =
116116 self . prepare_connect_socket ( peer_ip, egress_notes. bind , task_notes, & config) ?;
@@ -131,7 +131,7 @@ impl DirectFloatEscaper {
131131 . local_addr ( )
132132 . map_err ( UnderlyingTcpConnectError :: SetupSocketFailed ) ?;
133133 self . stats . tcp . connect . add_established ( ) ;
134- egress_notes. local = Some ( local_addr) ;
134+ egress_notes. tcp . local = Some ( local_addr) ;
135135 egress_notes. final_addr . target_addr = Some ( peer) ;
136136 egress_notes. final_addr . outgoing_addr = Some ( local_addr) ;
137137 Ok ( ( ups_stream, bind) )
@@ -209,7 +209,7 @@ impl DirectFloatEscaper {
209209 loop {
210210 if spawn_new_connection && let Some ( ip) = ips. pop ( ) {
211211 let peer = SocketAddr :: new ( ip, task_conf. upstream . port ( ) ) ;
212- egress_notes. next = Some ( peer) ;
212+ egress_notes. tcp . peer = Some ( peer) ;
213213 let ( sock, bind) =
214214 self . prepare_connect_socket ( ip, egress_notes. bind , task_notes, & config) ?;
215215 running_connection += 1 ;
@@ -253,7 +253,7 @@ impl DirectFloatEscaper {
253253 running_connection -= 1 ;
254254 let peer_addr = r. 1 ;
255255 let bind = r. 2 ;
256- egress_notes. next = Some ( peer_addr) ;
256+ egress_notes. tcp . peer = Some ( peer_addr) ;
257257 egress_notes. bind = BindAddr :: Ip ( bind. ip) ;
258258 egress_notes. expire = bind. expire_datetime;
259259 egress_notes. egress = Some ( bind. egress_info. clone( ) ) ;
@@ -263,7 +263,7 @@ impl DirectFloatEscaper {
263263 . local_addr( )
264264 . map_err( UnderlyingTcpConnectError :: SetupSocketFailed ) ?;
265265 self . stats. tcp. connect. add_established( ) ;
266- egress_notes. local = Some ( local_addr) ;
266+ egress_notes. tcp . local = Some ( local_addr) ;
267267 egress_notes. final_addr. target_addr = Some ( peer_addr) ;
268268 egress_notes. final_addr. outgoing_addr = Some ( local_addr) ;
269269 return Ok ( ( ups_stream, bind) ) ;
@@ -341,6 +341,8 @@ impl DirectFloatEscaper {
341341 egress_notes : & mut EgressNotes ,
342342 task_notes : & ServerTaskNotes ,
343343 ) -> Result < ( TcpStream , DirectFloatBindIp ) , UnderlyingTcpConnectError > {
344+ egress_notes. socket_type = Some ( EgressSocketType :: Tcp ) ;
345+
344346 let mut config = DirectTcpConnectConfig {
345347 connect : self . config . general . tcp_connect ,
346348 keepalive : self . config . tcp_keepalive ,
@@ -384,6 +386,7 @@ impl DirectFloatEscaper {
384386 old_egress_notes : & EgressNotes ,
385387 task_notes : & ServerTaskNotes ,
386388 ) -> Result < ( TcpStream , DirectFloatBindIp ) , UnderlyingTcpConnectError > {
389+ new_egress_notes. socket_type = Some ( EgressSocketType :: Tcp ) ;
387390 new_egress_notes. bind = old_egress_notes. bind ;
388391
389392 let mut config = DirectTcpConnectConfig {
@@ -404,7 +407,8 @@ impl DirectFloatEscaper {
404407 }
405408
406409 if task_conf. upstream . host_eq ( old_upstream) {
407- let control_addr = old_egress_notes. next . ok_or_else ( || {
410+ // This escaper only set tcp.peer for TCP connections
411+ let control_addr = old_egress_notes. tcp . peer . ok_or_else ( || {
408412 UnderlyingTcpConnectError :: SetupSocketFailed ( io:: Error :: new (
409413 io:: ErrorKind :: InvalidInput ,
410414 "no peer address for referenced connection found" ,
0 commit comments