From a16fa269e94cc55da81d3f9a1569a321c44997a2 Mon Sep 17 00:00:00 2001 From: Paper-Dragon <2678885646@qq.com> Date: Tue, 2 Jun 2026 14:28:20 +0800 Subject: [PATCH] =?UTF-8?q?Refactor=20Dockerfile=20directory=20creation=20?= =?UTF-8?q?and=20enhance=20UDP=20stream=20handling=20in=20lib.rs=20?= =?UTF-8?q?=EF=BC=8C=20fixed=20=20`--dns=20virtual`=20not=20work=20in=20do?= =?UTF-8?q?cker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 9 ++++----- src/lib.rs | 10 +++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index f7aafdc..559f809 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,11 +25,10 @@ FROM rust:latest AS musl-builder && rustup target add "$ARCH-unknown-linux-musl" \ && cargo build --release --target "$ARCH-unknown-linux-musl" - RUN mkdir /.etc \ - && touch /.etc/resolv.conf \ - && mkdir /.tmp \ - && chmod 777 /.tmp \ - && chmod +t /.tmp + RUN mkdir -p etc tmp \ + && touch etc/resolv.conf \ + && chmod 777 tmp \ + && chmod +t tmp #################################################################################################### ## Alpine image diff --git a/src/lib.rs b/src/lib.rs index b7be42c..88daa3b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -139,7 +139,15 @@ async fn create_tcp_stream(socket_queue: &Option>, peer: Socket async fn create_udp_stream(socket_queue: &Option>, peer: SocketAddr) -> std::io::Result { match &socket_queue { - None => UdpStream::connect(peer).await, + None => { + let bind_addr = match peer { + SocketAddr::V4(_) => SocketAddr::from(([0, 0, 0, 0], 0)), + SocketAddr::V6(_) => SocketAddr::from(([0, 0, 0, 0, 0, 0, 0, 0], 0)), + }; + let socket = UdpSocket::bind(bind_addr).await?; + socket.connect(peer).await?; + UdpStream::from_tokio(socket, peer).await + } Some(queue) => { let socket = queue.recv_udp(peer.ip().into()).await?; socket.connect(peer).await?;