aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/supervisor.rs46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/supervisor.rs b/src/supervisor.rs
index 9e4febf..137b7ec 100644
--- a/src/supervisor.rs
+++ b/src/supervisor.rs
@@ -298,6 +298,30 @@ impl Client {
let (ctl, ppp_dev) = session_fds.as_mut().map(|fds| fds.both_mut()).unzip();
tokio::select! {
+ biased;
+
+ packet = self.pppoe.to_send() => self.send_pppoe(&sock_disc, packet).await?,
+ packet = self.lcp.to_send() => self.send_lcp(
+ session_fds.as_mut().map(|fds| fds.link_mut()),
+ packet
+ ).await?,
+ packet = self.pap.to_send() => self.send_pap(
+ session_fds.as_mut().map(|fds| fds.link_mut()),
+ packet
+ ).await?,
+ packet = self.chap.to_send() => self.send_chap(
+ session_fds.as_mut().map(|fds| fds.link_mut()),
+ packet
+ ).await?,
+ packet = self.ipcp.to_send() => self.send_ipcp(
+ session_fds.as_mut().map(|fds| fds.network_mut()),
+ packet
+ ).await?,
+ packet = self.ipv6cp.to_send() => self.send_ipv6cp(
+ session_fds.as_mut().map(|fds| fds.network_mut()),
+ packet
+ ).await?,
+
result = pppoe_rx.changed() => {
result?;
@@ -490,28 +514,6 @@ impl Client {
ncp_check.reset();
}
- packet = self.pppoe.to_send() => self.send_pppoe(&sock_disc, packet).await?,
- packet = self.lcp.to_send() => self.send_lcp(
- session_fds.as_mut().map(|fds| fds.link_mut()),
- packet
- ).await?,
- packet = self.pap.to_send() => self.send_pap(
- session_fds.as_mut().map(|fds| fds.link_mut()),
- packet
- ).await?,
- packet = self.chap.to_send() => self.send_chap(
- session_fds.as_mut().map(|fds| fds.link_mut()),
- packet
- ).await?,
- packet = self.ipcp.to_send() => self.send_ipcp(
- session_fds.as_mut().map(|fds| fds.network_mut()),
- packet
- ).await?,
- packet = self.ipv6cp.to_send() => self.send_ipv6cp(
- session_fds.as_mut().map(|fds| fds.network_mut()),
- packet
- ).await?,
-
_ = echo_timeout.tick() => {
if *lcp_rx.borrow() {
// Send an LCP Echo-Request every 12 seconds.