diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-06 13:33:28 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-06 13:33:28 +0100 |
commit | 08ddbad014fac4da6b9ce651bd3d07963358dbf6 (patch) | |
tree | 70805d40d9035f027e6a2072f5ffa1c78a16841f | |
parent | f53ae8daaf546d888af0e4b6782c249991b0da15 (diff) |
bias: prefer sending over receiving
Fixes an issue where sent PADTs already have the session ID and destination MAC address set to the starting values.
-rw-r--r-- | src/supervisor.rs | 46 |
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. |