diff --git a/src/server/kiwix-serve.cpp b/src/server/kiwix-serve.cpp index 3db57ca8..261379a4 100644 --- a/src/server/kiwix-serve.cpp +++ b/src/server/kiwix-serve.cpp @@ -324,18 +324,12 @@ int main(int argc, char** argv) auto libraryFileTimestamp = newestFileTimestamp(libraryPaths); auto curLibraryFileTimestamp = libraryFileTimestamp; - /* Infer ipMode from address */ - kiwix::IpMode ipMode = kiwix::IpMode::ipv4; - - if (address == "all"){ - address = ""; - ipMode = kiwix::IpMode::all; - } else if (address == "ipv4"){ - address = ""; - } else if (address == "ipv6"){ - address = ""; - ipMode = kiwix::IpMode::ipv6; - } + kiwix::IpMode ipMode = (address == "all") ? kiwix::IpMode::all : + (address == "ipv6") ? kiwix::IpMode::ipv6 : + kiwix::IpMode::ipv4; + + if (address == "ipv4" || address == "ipv6" || address == "all") // Protocol has been provided instead of ip. Clear it since it has been handled. + address.clear(); #ifndef _WIN32 /* Fork if necessary */ @@ -384,12 +378,16 @@ int main(int argc, char** argv) exit(1); } - std::string host = (server.getIpMode()==kiwix::IpMode::all || server.getIpMode()==kiwix::IpMode::ipv6) - ? "[" + server.getAddress() + "]" : server.getAddress(); - - std::string url = "http://" + host + ":" + std::to_string(server.getPort()) + normalizeRootUrl(rootLocation); - std::cout << "The Kiwix server is running and can be accessed in the local network at: " - << url << std::endl; + std::string prefix = "http://"; + kiwix::IpAddress addresses = server.getAddress(); + std::string suffix = ":" + std::to_string(server.getPort()) + normalizeRootUrl(rootLocation); + std::cout << "The Kiwix server is running and can be accessed in the local network at: "; + if(ipMode == kiwix::IpMode::all) + std::cout << prefix << addresses.addr << suffix << " and " << prefix << "[" << addresses.addr6 << "]" << suffix << std::endl; + else if(ipMode == kiwix::IpMode::ipv4) + std::cout << prefix << addresses.addr << suffix << std::endl; + else if(ipMode == kiwix::IpMode::ipv6) + std::cout << prefix << "[" << addresses.addr6 << "]" << suffix << std::endl; /* Run endless (until PPID dies) */ waiting = true;