Paper-Dragon
3 days ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
13 additions and
6 deletions
-
Dockerfile
-
src/lib.rs
|
|
@ -25,11 +25,10 @@ FROM rust:latest AS musl-builder |
|
|
&& rustup target add "$ARCH-unknown-linux-musl" \ |
|
|
&& rustup target add "$ARCH-unknown-linux-musl" \ |
|
|
&& cargo build --release --target "$ARCH-unknown-linux-musl" |
|
|
&& cargo build --release --target "$ARCH-unknown-linux-musl" |
|
|
|
|
|
|
|
|
RUN mkdir /.etc \ |
|
|
RUN mkdir -p etc tmp \ |
|
|
&& touch /.etc/resolv.conf \ |
|
|
&& touch etc/resolv.conf \ |
|
|
&& mkdir /.tmp \ |
|
|
&& chmod 777 tmp \ |
|
|
&& chmod 777 /.tmp \ |
|
|
&& chmod +t tmp |
|
|
&& chmod +t /.tmp |
|
|
|
|
|
|
|
|
|
|
|
#################################################################################################### |
|
|
#################################################################################################### |
|
|
## Alpine image |
|
|
## Alpine image |
|
|
|
|
|
@ -139,7 +139,15 @@ async fn create_tcp_stream(socket_queue: &Option<Arc<SocketQueue>>, peer: Socket |
|
|
|
|
|
|
|
|
async fn create_udp_stream(socket_queue: &Option<Arc<SocketQueue>>, peer: SocketAddr) -> std::io::Result<UdpStream> { |
|
|
async fn create_udp_stream(socket_queue: &Option<Arc<SocketQueue>>, peer: SocketAddr) -> std::io::Result<UdpStream> { |
|
|
match &socket_queue { |
|
|
match &socket_queue { |
|
|
None => UdpStream::connect(peer).await, |
|
|
None => { |
|
|
|
|
|
let bind_addr = match peer { |
|
|
|
|
|
SocketAddr::V4(_) => SocketAddr::from((std::net::Ipv4Addr::UNSPECIFIED, 0)), |
|
|
|
|
|
SocketAddr::V6(_) => SocketAddr::from((std::net::Ipv6Addr::UNSPECIFIED, 0)), |
|
|
|
|
|
}; |
|
|
|
|
|
let socket = UdpSocket::bind(bind_addr).await?; |
|
|
|
|
|
socket.connect(peer).await?; |
|
|
|
|
|
UdpStream::from_tokio(socket, peer).await |
|
|
|
|
|
} |
|
|
Some(queue) => { |
|
|
Some(queue) => { |
|
|
let socket = queue.recv_udp(peer.ip().into()).await?; |
|
|
let socket = queue.recv_udp(peer.ip().into()).await?; |
|
|
socket.connect(peer).await?; |
|
|
socket.connect(peer).await?; |
|
|
|