From c2f1f13bb3b8e6b51e882ca33494f14f99a13cb7 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Fri, 28 Jan 2022 08:39:47 -0800 Subject: [PATCH] server: fix beacons TX on Linux --- src/config.cpp | 14 +++++++++++--- src/server.cpp | 2 ++ test/testconfig.cpp | 34 +++++++++++++++++++++++++++++++++- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/config.cpp b/src/config.cpp index 3ed5337..4dcb729 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -288,10 +288,18 @@ void expandAddrList(const std::vector& ifaces, evsocket dummy(AF_INET, SOCK_DGRAM, 0); for(auto& saddr : ifaces) { - if(saddr.addr.family()!=AF_INET) - continue; + auto matchAddr = &saddr.addr; - for(auto& addr : dummy.broadcasts(&saddr.addr)) { + if(evsocket::ipstack==evsocket::Linsock && saddr.addr.family()==AF_INET6 && saddr.addr.isAny()) { + // special case handling to match "promote" in server::Config::expand() + // treat [::] as 0.0.0.0 + matchAddr = nullptr; + + } else if(saddr.addr.family()!=AF_INET) { + continue; + } + + for(auto& addr : dummy.broadcasts(matchAddr)) { addr.setPort(0u); addrs.emplace_back(addr); } diff --git a/src/server.cpp b/src/server.cpp index e95d171..ad506f6 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -458,6 +458,8 @@ Server::Pvt::Pvt(const Config &conf) for(const auto& addr : effective.beaconDestinations) { beaconDest.emplace_back(addr.c_str(), effective.udp_port); + log_debug_printf(serversetup, "Will send beacons to %s\n", + std::string(SB()<