From d658c1187cbbd1d7a7993da3c4cf84ac9ae37fd9 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Tue, 5 Mar 2024 10:44:55 -0800 Subject: [PATCH] Fix crash when multipath is used with forceTcpRelay --- service/OneService.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/service/OneService.cpp b/service/OneService.cpp index dbf5d497e..eeebd90ed 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -2445,8 +2445,13 @@ public: } // bondingPolicy cannot be used with allowTcpFallbackRelay - _allowTcpFallbackRelay = OSUtils::jsonBool(settings["allowTcpFallbackRelay"],true); - _forceTcpRelay = OSUtils::jsonBool(settings["forceTcpRelay"],false); + bool _forceTcpRelayTmp = (OSUtils::jsonBool(settings["forceTcpRelay"],false)); + bool _bondInUse = _node->bondController()->inUse(); + if (_forceTcpRelayTmp && _bondInUse) { + fprintf(stderr, "Warning: forceTcpRelay cannot be used with multipath. Disabling forceTcpRelay\n"); + } + _allowTcpFallbackRelay = (OSUtils::jsonBool(settings["allowTcpFallbackRelay"],true) && !_node->bondController()->inUse()); + _forceTcpRelay = (_forceTcpRelayTmp && !_node->bondController()->inUse()); #ifdef ZT_TCP_FALLBACK_RELAY _fallbackRelayAddress = InetAddress(OSUtils::jsonString(settings["tcpFallbackRelay"], ZT_TCP_FALLBACK_RELAY).c_str());