From 9880741dc1168eaa6ad1f79f7e9e1528ae36e6b7 Mon Sep 17 00:00:00 2001 From: ssrlive <30760636+ssrlive@users.noreply.github.com> Date: Tue, 22 Aug 2023 18:55:44 +0800 Subject: [PATCH] consume_cached_dns_over_tcp_packets --- src/tun2proxy.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/tun2proxy.rs b/src/tun2proxy.rs index 60fac3f..2a4aa47 100644 --- a/src/tun2proxy.rs +++ b/src/tun2proxy.rs @@ -526,6 +526,15 @@ impl<'a> TunToProxy<'a> { Ok(()) } + fn consume_cached_dns_over_tcp_packets(&mut self, info: &ConnectionInfo) -> Result<()> { + if let Some(state) = self.connection_map.get_mut(info) { + while let Some(buf) = state.udp_over_tcp_data_cache.pop_front() { + _ = state.mio_stream.write(&buf)?; + } + } + Ok(()) + } + fn process_incoming_udp_packets( &mut self, manager: &Rc, @@ -859,7 +868,7 @@ impl<'a> TunToProxy<'a> { Ok(()) } - fn comsume_cached_udp_packets(&mut self, info: &ConnectionInfo) -> Result<()> { + fn consume_cached_udp_packets(&mut self, info: &ConnectionInfo) -> Result<()> { // Try to send the first UDP packets to remote SOCKS5 server for UDP associate session if let Some(state) = self.connection_map.get_mut(info) { if let Some(udp_socket) = state.udp_socket.as_ref() { @@ -958,7 +967,8 @@ impl<'a> TunToProxy<'a> { // server. self.write_to_server(&conn_info)?; - self.comsume_cached_udp_packets(&conn_info)?; + self.consume_cached_dns_over_tcp_packets(&conn_info)?; + self.consume_cached_udp_packets(&conn_info)?; } if event.is_writable() {