From 7f8169f0dae7b71988eec69f72281667dfbd57b8 Mon Sep 17 00:00:00 2001 From: gabime Date: Mon, 10 Feb 2020 15:02:48 +0200 Subject: [PATCH] Fixed tcp_sink to accept hostnames --- include/spdlog/sinks/tcp_sink.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/include/spdlog/sinks/tcp_sink.h b/include/spdlog/sinks/tcp_sink.h index 961cc343..cf31d1fa 100644 --- a/include/spdlog/sinks/tcp_sink.h +++ b/include/spdlog/sinks/tcp_sink.h @@ -8,6 +8,7 @@ #include #include #include +#include namespace spdlog { namespace sinks { @@ -22,12 +23,16 @@ public: { SPDLOG_THROW(spdlog::spdlog_ex("Socket creation error", errno)); } - serv_addr_.sin_family = AF_INET; - serv_addr_.sin_port = ::htons(static_cast(port)); - if (inet_pton(AF_INET, address.c_str(), &serv_addr_.sin_addr) <= 0) + struct hostent *he = gethostbyname(address.c_str()); + if (he == nullptr) { - SPDLOG_THROW(spdlog::spdlog_ex("Invalid address/ Address not supported", errno)); + SPDLOG_THROW(spdlog::spdlog_ex("gethostbyname failed", errno)); } + + serv_addr_.sin_family = AF_INET; + + serv_addr_.sin_addr = *(struct in_addr *)(he->h_addr); + serv_addr_.sin_port = ::htons(static_cast(port)); if (connect(sock_, (struct sockaddr *)&serv_addr_, sizeof(serv_addr_)) < 0) { SPDLOG_THROW(spdlog::spdlog_ex("Connection Failed", errno)); @@ -48,6 +53,8 @@ protected: void flush_() override {} +private: + private: int sock_; struct sockaddr_in serv_addr_;