Merge pull request #777 from mahkoh/jorth/shutdown-connection
clients: explicitly shutdown connection when killing client
This commit is contained in:
commit
893be823b6
1 changed files with 9 additions and 0 deletions
|
|
@ -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<Client>) {
|
||||
|
|
@ -42,6 +44,9 @@ pub async fn client(data: Rc<Client>) {
|
|||
}
|
||||
|
||||
async fn receive(data: Rc<Client>) {
|
||||
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<Client>) {
|
|||
}
|
||||
|
||||
async fn send(data: Rc<Client>) {
|
||||
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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue