@@ -220,29 +220,6 @@ impl Server {
220220 let orig_server_addr = cfg. server_addr . net_addr . to_socket_addr ( ) . unwrap ( ) ;
221221 let require_quic_server = cfg. server_addr . is_quic_proto ;
222222
223- // if is_udp_proto && !require_quic_server {
224- // self.bind_udp_server(orig_server_addr, true).await?;
225- // return Ok(());
226- // }
227-
228- // if is_tcp_or_udp_proto {
229- // // we need to start the tcp or udp server
230- // if let Some(ProtoType::Udp) = cfg.server_addr.proto {
231- // if !require_quic_server {
232- // let udp_server = self.bind_udp_server(proxy_server_addr, true).await?;
233- // }
234- // } else {
235- // }
236- // }
237-
238- // // let (require_tcp, require_udp) = self.is_tcp_or_udp_server_required();
239- // let udp_server_addr = if let Some(ProtoType::Udp) = cfg.server_addr.proto {
240- // let udp_server = self.bind_udp_server(proxy_server_addr, true).await?;
241- // udp_server.local_addr().ok()
242- // } else {
243- // inner_state!(self, udp_upstream)
244- // };
245-
246223 let ( proxy_tcp_server_handle, quic_server_tcp_upstream, quic_server_udp_upstream) =
247224 if !is_udp_proto {
248225 let tcp_server_addr = if require_quic_server {
@@ -717,10 +694,12 @@ impl Server {
717694 }
718695
719696 if outbound_type == OutboundType :: Direct {
720- debug ! (
721- "serve request directly: {addr} from {}" ,
722- inbound_stream. peer_addr( ) . unwrap( )
723- ) ;
697+ let peer_addr = inbound_stream. peer_addr ( ) . map_err ( |e| {
698+ debug ! ( "unexpected error: {e}" ) ;
699+ ProxyError :: InternalError
700+ } ) ?;
701+
702+ debug ! ( "serve request directly: {addr} from {peer_addr}" , ) ;
724703 outbound_stream = match & addr. host {
725704 Host :: Domain ( domain) => {
726705 let resolver = if addr. is_internal_domain ( ) {
@@ -736,16 +715,21 @@ impl Server {
736715 let mut outbound_stream = None ;
737716 for ip in ip_arr {
738717 let resolved_ip = NetAddr :: from_ip ( ip, addr. port ) ;
739- if resolved_ip. is_loopback ( )
740- && addr. port == inbound_stream. local_addr ( ) . unwrap ( ) . port ( )
741- {
742- outbound_stream = Self :: connect_to_dashboard (
743- params. dashboard_addr ,
744- & inbound_stream,
745- params. tcp_nodelay ,
746- )
747- . await ?;
748- break ;
718+ if resolved_ip. is_loopback ( ) {
719+ let local_addr = inbound_stream. local_addr ( ) . map_err ( |e| {
720+ debug ! ( "unexpected error: {e}" ) ;
721+ ProxyError :: InternalError
722+ } ) ?;
723+
724+ if addr. port == local_addr. port ( ) {
725+ outbound_stream = Self :: connect_to_dashboard (
726+ params. dashboard_addr ,
727+ & inbound_stream,
728+ params. tcp_nodelay ,
729+ )
730+ . await ?;
731+ break ;
732+ }
749733 }
750734
751735 let stream = Self :: create_tcp_stream (
@@ -763,8 +747,12 @@ impl Server {
763747 }
764748
765749 Host :: IP ( ip) => {
766- let inbound_addr = inbound_stream. local_addr ( ) . unwrap ( ) ;
767- if ip == & inbound_addr. ip ( ) && addr. port == inbound_addr. port ( ) {
750+ let local_addr = inbound_stream. local_addr ( ) . map_err ( |e| {
751+ debug ! ( "unexpected error: {e}" ) ;
752+ ProxyError :: InternalError
753+ } ) ?;
754+
755+ if ip == & local_addr. ip ( ) && addr. port == local_addr. port ( ) {
768756 Self :: connect_to_dashboard (
769757 params. dashboard_addr ,
770758 & inbound_stream,
0 commit comments