From 8da62e2ce9ef0fdb66a08ea0a910854f37f08a48 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Fri, 6 Mar 2026 15:52:00 +0100 Subject: [PATCH] clients: explicitly shutdown connection when killing client --- src/client/tasks.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/client/tasks.rs b/src/client/tasks.rs index a829eac1..cd550bf8 100644 --- a/src/client/tasks.rs +++ b/src/client/tasks.rs @@ -10,7 +10,9 @@ use { }, }, futures_util::{FutureExt, select}, + run_on_drop::on_drop, std::{collections::VecDeque, mem, rc::Rc, time::Duration}, + uapi::c, }; pub async fn client(data: Rc) { @@ -42,6 +44,9 @@ pub async fn client(data: Rc) { } async fn receive(data: Rc) { + let _shutdown_rd = on_drop(|| { + let _ = uapi::shutdown(data.socket.raw(), c::SHUT_RD); + }); let display = data.display().unwrap(); let recv = async { let mut buf = BufFdIn::new(&data.socket, &data.state.ring); @@ -108,6 +113,10 @@ async fn receive(data: Rc) { } async fn send(data: Rc) { + let socket = data.socket.clone(); + let _shutdown_wr = on_drop(|| { + let _ = uapi::shutdown(socket.raw(), c::SHUT_WR); + }); let send = async { let mut out = BufFdOut::new(&data.socket, &data.state.ring); let mut buffers = VecDeque::new();