diff --git a/src/jaegertracing/net/IPAddress.cpp b/src/jaegertracing/net/IPAddress.cpp index 9c41dc5a..893f4259 100644 --- a/src/jaegertracing/net/IPAddress.cpp +++ b/src/jaegertracing/net/IPAddress.cpp @@ -15,6 +15,7 @@ */ #include "jaegertracing/net/IPAddress.h" +#include "jaegertracing/platform/Hostname.h" #include #include @@ -36,6 +37,12 @@ struct IfAddrDeleter : public std::function { IPAddress IPAddress::localIP(int family) { + try { + return versionFromString(platform::hostname(), 0, family); + } catch (...) { + // Fall back to returning the first matching interface + } + return localIP([family](const ifaddrs* ifAddr) { return ifAddr->ifa_addr != nullptr && ifAddr->ifa_addr->sa_family == family;