Add ip availability check in server start

This commit is contained in:
sgourdas 2024-09-23 19:18:57 +03:00
parent b80699916d
commit 95529d2c0a

View File

@ -85,6 +85,19 @@ namespace kiwix {
namespace
{
bool ipAvailable(const std::string addr)
{
auto interfaces = kiwix::getNetworkInterfacesIPv4Or6();
for (const auto& [_, interfaceIps] : interfaces) {
if ((interfaceIps.addr == addr) || (interfaceIps.addr6 == addr)) {
return true;
}
}
return false;
}
inline std::string normalizeRootUrl(std::string rootUrl)
{
while ( !rootUrl.empty() && rootUrl.back() == '/' )
@ -484,6 +497,11 @@ bool InternalServer::start() {
return false;
}
if (!ipAvailable(addr)) {
std::cerr << "ERROR: IP address is not available on this system: " << addr << std::endl;
return false;
}
m_ipMode = !m_addr.addr.empty() ? IpMode::IPV4 : IpMode::IPV6;
}