aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-11-06 13:33:28 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-11-06 13:33:28 +0100
commit08ddbad014fac4da6b9ce651bd3d07963358dbf6 (patch)
tree70805d40d9035f027e6a2072f5ffa1c78a16841f
parentf53ae8daaf546d888af0e4b6782c249991b0da15 (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.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.