fix kcp_stream

This commit is contained in:
rustdesk 2025-06-13 00:30:21 +08:00
parent 4e9bdcbc1f
commit 5beebf967d

View File

@ -37,7 +37,12 @@ impl KcpStream {
let mut endpoint = KcpEndpoint::new(); let mut endpoint = KcpEndpoint::new();
endpoint.run().await; endpoint.run().await;
let (input, output) = (endpoint.input_sender(), endpoint.output_receiver().unwrap()); let (input, output) = (
endpoint.input_sender(),
endpoint
.output_receiver()
.ok_or_else(|| anyhow::anyhow!("Failed to get output receiver"))?,
);
let (stop_sender, stop_receiver) = oneshot::channel(); let (stop_sender, stop_receiver) = oneshot::channel();
if let Some(packet) = init_packet { if let Some(packet) = init_packet {
if packet.len() >= std::mem::size_of::<KcpPacketHeader>() { if packet.len() >= std::mem::size_of::<KcpPacketHeader>() {
@ -67,11 +72,16 @@ impl KcpStream {
let mut endpoint = KcpEndpoint::new(); let mut endpoint = KcpEndpoint::new();
endpoint.run().await; endpoint.run().await;
let (input, output) = (endpoint.input_sender(), endpoint.output_receiver().unwrap()); let (input, output) = (
endpoint.input_sender(),
endpoint
.output_receiver()
.ok_or_else(|| anyhow::anyhow!("Failed to get output receiver"))?,
);
let (stop_sender, stop_receiver) = oneshot::channel(); let (stop_sender, stop_receiver) = oneshot::channel();
Self::kcp_io(udp_socket.clone(), input, output, stop_receiver).await; Self::kcp_io(udp_socket.clone(), input, output, stop_receiver).await;
let conn_id = endpoint.connect(timeout, 0, 0, Bytes::new()).await.unwrap(); let conn_id = endpoint.connect(timeout, 0, 0, Bytes::new()).await?;
if let Some(stream) = stream::KcpStream::new(&endpoint, conn_id) { if let Some(stream) = stream::KcpStream::new(&endpoint, conn_id) {
Ok(( Ok((
Self { Self {
@ -93,7 +103,7 @@ impl KcpStream {
) { ) {
let udp = udp_socket.clone(); let udp = udp_socket.clone();
tokio::spawn(async move { tokio::spawn(async move {
let mut buf = vec![0; 10240]; let mut buf = vec![0; 1500];
loop { loop {
tokio::select! { tokio::select! {
_ = &mut stop_receiver => { _ = &mut stop_receiver => {