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() {