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()<