From 636d9c5f504e2e299df6c2fb057458477994fea6 Mon Sep 17 00:00:00 2001 From: zonyitoo Date: Tue, 1 Jul 2025 01:22:05 +0800 Subject: [PATCH] feat: impls AsSocket, AsRawSocket for UdpSocket --- crates/shadowsocks/src/net/udp.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/crates/shadowsocks/src/net/udp.rs b/crates/shadowsocks/src/net/udp.rs index a6423a0f..7a7c83a5 100644 --- a/crates/shadowsocks/src/net/udp.rs +++ b/crates/shadowsocks/src/net/udp.rs @@ -35,11 +35,11 @@ use futures::ready; use tokio::io::Interest; use tokio::{io::ReadBuf, net::ToSocketAddrs}; -use crate::{ServerAddr, context::Context, relay::socks5::Address}; +use crate::{context::Context, relay::socks5::Address, ServerAddr}; use super::{ - AcceptOpts, AddrFamily, ConnectOpts, sys::{bind_outbound_udp_socket, create_inbound_udp_socket, create_outbound_udp_socket}, + AcceptOpts, AddrFamily, ConnectOpts, }; /// Message struct for `batch_send` @@ -414,3 +414,17 @@ impl std::os::fd::AsFd for UdpSocket { self.socket.as_fd() } } + +#[cfg(windows)] +impl std::os::windows::io::AsRawSocket for UdpSocket { + fn as_raw_socket(&self) -> std::os::windows::io::RawSocket { + self.socket.as_raw_socket() + } +} + +#[cfg(windows)] +impl std::os::windows::io::AsSocket for UdpSocket { + fn as_socket(&self) -> std::os::windows::io::BorrowedSocket<'_> { + self.socket.as_socket() + } +}