summaryrefslogtreecommitdiffhomepage
path: root/talpid-core/src
diff options
context:
space:
mode:
Diffstat (limited to 'talpid-core/src')
-rw-r--r--talpid-core/src/split_tunnel/macos/tun.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/talpid-core/src/split_tunnel/macos/tun.rs b/talpid-core/src/split_tunnel/macos/tun.rs
index 88919ab97c..acb2746b1a 100644
--- a/talpid-core/src/split_tunnel/macos/tun.rs
+++ b/talpid-core/src/split_tunnel/macos/tun.rs
@@ -318,14 +318,14 @@ async fn run_ingress_task(
let dummy_read = tokio::spawn(async move {
loop {
tokio::select! {
+ biased; Ok(()) | Err(_) = abort_read_rx.recv() => {
+ break;
+ }
result = tun_reader.read(&mut garbage) => {
if result.is_err() {
break;
}
}
- Ok(()) | Err(_) = abort_read_rx.recv() => {
- break;
- }
}
}
tun_reader
@@ -334,6 +334,9 @@ async fn run_ingress_task(
// Write data incoming on the default interface to the ST utun
let tun_writer = loop {
tokio::select! {
+ biased; Ok(()) | Err(_) = abort_rx.recv() => {
+ break tun_writer;
+ }
result = default_read.read(&mut read_buffer) => {
let Ok(read_n) = result else {
break tun_writer;
@@ -345,9 +348,6 @@ async fn run_ingress_task(
handle_incoming_data(&mut tun_writer, payload, vpn_v4, vpn_v6).await;
}
}
- Ok(()) | Err(_) = abort_rx.recv() => {
- break tun_writer;
- }
}
};
@@ -382,6 +382,10 @@ async fn run_egress_task(
loop {
tokio::select! {
+ biased; Ok(()) | Err(_) = abort_rx.recv() => {
+ log::debug!("stopping packet processing");
+ break Ok(EgressResult { pktap_stream, classify });
+ }
packet = pktap_stream.next() => {
let mut packet = packet.ok_or_else(|| {
log::debug!("packet stream closed");
@@ -396,10 +400,6 @@ async fn run_egress_task(
classify_and_send(&classify, &mut packet, &default_interface, &mut default_write, vpn_device)
}
- Ok(()) | Err(_) = abort_rx.recv() => {
- log::debug!("stopping packet processing");
- break Ok(EgressResult { pktap_stream, classify });
- }
}
}
}