return ret;
}
-string getHostname()
+static size_t getMaxHostNameSize()
{
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 255
+#if defined(HOST_NAME_MAX)
+ return HOST_NAME_MAX;
#endif
- char tmp[MAXHOSTNAMELEN];
- if(gethostname(tmp, MAXHOSTNAMELEN))
- return "UNKNOWN";
+#if defined(_SC_HOST_NAME_MAX)
+ auto tmp = sysconf(_SC_HOST_NAME_MAX);
+ if (tmp != -1) {
+ return tmp;
+ }
+#endif
- return string(tmp);
+ const size_t maxHostNameSize = 255;
+ return maxHostNameSize;
+}
+
+std::optional<string> getHostname()
+{
+ const size_t maxHostNameBufSize = getMaxHostNameSize() + 1;
+ std::string hostname;
+ hostname.resize(maxHostNameBufSize, 0);
+
+ if (gethostname(hostname.data(), maxHostNameBufSize) == -1) {
+ return std::nullopt;
+ }
+
+ hostname.resize(strlen(hostname.c_str()));
+ return std::make_optional(hostname);
+}
+
+std::string getCarbonHostName()
+{
+ auto hostname = getHostname();
+ if (!hostname.has_value()) {
+ throw std::runtime_error(stringerror());
+ }
+
+ boost::replace_all(*hostname, ".", "_");
+ return *hostname;
}
string itoa(int i)
throw std::runtime_error("Calling reverseNameFromIP() for an address which is neither an IPv4 nor an IPv6");
}
-static size_t getMaxHostNameSize()
-{
-#if defined(HOST_NAME_MAX)
- return HOST_NAME_MAX;
-#endif
-
-#if defined(_SC_HOST_NAME_MAX)
- auto tmp = sysconf(_SC_HOST_NAME_MAX);
- if (tmp != -1) {
- return tmp;
- }
-#endif
-
- /* _POSIX_HOST_NAME_MAX */
- return 255;
-}
-
-std::string getCarbonHostName()
-{
- std::string hostname;
- hostname.resize(getMaxHostNameSize() + 1, 0);
-
- if (gethostname(const_cast<char*>(hostname.c_str()), hostname.size()) != 0) {
- throw std::runtime_error(stringerror());
- }
-
- boost::replace_all(hostname, ".", "_");
- hostname.resize(strlen(hostname.c_str()));
-
- return hostname;
-}
-
std::string makeLuaString(const std::string& in)
{
ostringstream str;
string humanDuration(time_t passed);
bool stripDomainSuffix(string *qname, const string &domain);
void stripLine(string &line);
-string getHostname();
+std::optional<string> getHostname();
+std::string getCarbonHostName();
string urlEncode(const string &text);
int waitForData(int fd, int seconds, int useconds=0);
int waitFor2Data(int fd1, int fd2, int seconds, int useconds, int* fd);
DNSName reverseNameFromIP(const ComboAddress& ip);
-std::string getCarbonHostName();
size_t parseRFC1035CharString(const std::string &in, std::string &val); // from ragel
size_t parseSVCBValueListFromParsedRFC1035CharString(const std::string &in, vector<std::string> &val); // from ragel
size_t parseSVCBValueList(const std::string &in, vector<std::string> &val);
g_quiet = false;
g_dnssecLOG = true;
}
- string myHostname = getHostname();
- if (myHostname == "UNKNOWN") {
+ auto myHostname = getHostname();
+ if (!myHostname.has_value()) {
SLOG(g_log << Logger::Warning << "Unable to get the hostname, NSID and id.server values will be empty" << endl,
log->info(Logr::Warning, "Unable to get the hostname, NSID and id.server values will be empty"));
- myHostname = "";
}
SyncRes::s_minimumTTL = ::arg().asNum("minimum-ttl-override");
}
if (SyncRes::s_serverID.empty()) {
- SyncRes::s_serverID = myHostname;
+ SyncRes::s_serverID = myHostname.has_value() ? *myHostname : "";
}
SyncRes::s_ecsipv4limit = ::arg().asNum("ecs-ipv4-bits");
dns_random_init();
if (::arg()["server-id"].empty()) {
- ::arg().set("server-id") = myHostname;
+ ::arg().set("server-id") = myHostname.has_value() ? *myHostname : "";
}
int newgid = 0;