From 816ef88c14194e10e425983cadd65c35ec4c6381 Mon Sep 17 00:00:00 2001 From: Warm Beer Date: Wed, 24 Jul 2024 14:42:35 +0200 Subject: [PATCH] chore(node): [#1999] panic on upnp event `GatewayNotFound` --- sn_networking/src/event/mod.rs | 1 + sn_networking/src/event/swarm.rs | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/sn_networking/src/event/mod.rs b/sn_networking/src/event/mod.rs index 85e0d65400..22ba714993 100644 --- a/sn_networking/src/event/mod.rs +++ b/sn_networking/src/event/mod.rs @@ -157,6 +157,7 @@ pub enum NetworkEvent { #[derive(Debug, Clone)] pub enum TerminateNodeReason { HardDiskWriteError, + UpnpGatewayNotFound, } // Manually implement Debug as `#[debug(with = "unverified_record_fmt")]` not working as expected. diff --git a/sn_networking/src/event/swarm.rs b/sn_networking/src/event/swarm.rs index 9db2195ece..78496bbae4 100644 --- a/sn_networking/src/event/swarm.rs +++ b/sn_networking/src/event/swarm.rs @@ -6,6 +6,7 @@ // KIND, either express or implied. Please review the Licences for the specific language governing // permissions and limitations relating to use of the SAFE Network Software. +use crate::event::TerminateNodeReason; use crate::{ cmd::LocalSwarmCmd, event::NodeEvent, @@ -80,6 +81,12 @@ impl SwarmDriver { } event_string = "upnp_event"; info!(?upnp_event, "UPnP event"); + if let libp2p::upnp::Event::GatewayNotFound = upnp_event { + warn!("UPnP is not enabled/supported on the gateway. Please rerun without the `--upnp` flag"); + self.send_event(NetworkEvent::TerminateNode { + reason: TerminateNodeReason::UpnpGatewayNotFound, + }); + } } SwarmEvent::Behaviour(NodeEvent::RelayServer(event)) => {