summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--talpid-core/src/routing/linux.rs11
-rw-r--r--talpid-core/src/routing/unix.rs11
2 files changed, 17 insertions, 5 deletions
diff --git a/talpid-core/src/routing/linux.rs b/talpid-core/src/routing/linux.rs
index d9f272639d..1da874a507 100644
--- a/talpid-core/src/routing/linux.rs
+++ b/talpid-core/src/routing/linux.rs
@@ -1,5 +1,7 @@
use crate::routing::{imp::RouteManagerCommand, NetNode, Node, RequiredRoute, Route};
+use talpid_types::ErrorExt;
+
use ipnetwork::IpNetwork;
use std::{
collections::{BTreeMap, HashSet},
@@ -426,7 +428,9 @@ impl RouteManagerImplInner {
self.process_command(command).await?;
},
(route_change, socket) = self.messages.select_next_some().fuse() => {
- self.process_netlink_message(route_change).await?;
+ if let Err(error) = self.process_netlink_message(route_change).await {
+ log::error!("{}", error.display_chain_with_msg("Failed to process netlink message"));
+ }
}
};
}
@@ -439,11 +443,12 @@ impl RouteManagerImplInner {
self.cleanup_routes().await;
log::trace!("Route manager done");
let _ = shutdown_signal.send(());
- return Ok(());
}
RouteManagerCommand::AddRoutes(routes) => {
log::debug!("Adding routes: {:?}", routes);
- self.add_required_routes(routes).await?;
+ if let Err(error) = self.add_required_routes(routes).await {
+ log::error!("{}", error.display_chain_with_msg("Failed to add routes"));
+ }
}
RouteManagerCommand::ClearRoutes => {
log::debug!("Clearing routes");
diff --git a/talpid-core/src/routing/unix.rs b/talpid-core/src/routing/unix.rs
index 151c642c41..597a203deb 100644
--- a/talpid-core/src/routing/unix.rs
+++ b/talpid-core/src/routing/unix.rs
@@ -108,7 +108,12 @@ impl RouteManager {
/// Applies the given routes until [`RouteManager::stop`] is called.
pub fn add_routes(&mut self, routes: HashSet<RequiredRoute>) -> Result<(), Error> {
if let Some(tx) = &self.manage_tx {
- let _ = tx.unbounded_send(RouteManagerCommand::AddRoutes(routes));
+ if tx
+ .unbounded_send(RouteManagerCommand::AddRoutes(routes))
+ .is_err()
+ {
+ return Err(Error::RouteManagerDown);
+ }
Ok(())
} else {
Err(Error::RouteManagerDown)
@@ -119,7 +124,9 @@ impl RouteManager {
/// [`RouteManager::add_routes`].
pub fn clear_routes(&mut self) -> Result<(), Error> {
if let Some(tx) = &self.manage_tx {
- let _ = tx.unbounded_send(RouteManagerCommand::ClearRoutes);
+ if tx.unbounded_send(RouteManagerCommand::ClearRoutes).is_err() {
+ return Err(Error::RouteManagerDown);
+ }
Ok(())
} else {
Err(Error::RouteManagerDown)