From ece4b4969b296a3da010fb22768348650e70962d Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Thu, 9 Jul 2015 15:30:24 +0200 Subject: If hostname resolution fails, do not try all possible ports --- louloulibs/network/tcp_socket_handler.cpp | 9 ++++++--- louloulibs/network/tcp_socket_handler.hpp | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'louloulibs') diff --git a/louloulibs/network/tcp_socket_handler.cpp b/louloulibs/network/tcp_socket_handler.cpp index e20357b..04bb321 100644 --- a/louloulibs/network/tcp_socket_handler.cpp +++ b/louloulibs/network/tcp_socket_handler.cpp @@ -40,15 +40,16 @@ TCPSocketHandler::TCPSocketHandler(std::shared_ptr poller): SocketHandler(poller, -1), use_tls(false), connected(false), - connecting(false) + connecting(false), #ifdef CARES_FOUND - ,resolving(false), + resolving(false), resolved(false), resolved4(false), resolved6(false), cares_addrinfo(nullptr), - cares_error() + cares_error(), #endif + hostname_resolution_failed(false) {} TCPSocketHandler::~TCPSocketHandler() @@ -109,6 +110,7 @@ void TCPSocketHandler::connect(const std::string& address, const std::string& po addr_res = this->cares_addrinfo; if (!addr_res) { + this->hostname_resolution_failed = true; const auto msg = this->cares_error; this->close(); this->on_connection_failed(msg); @@ -129,6 +131,7 @@ void TCPSocketHandler::connect(const std::string& address, const std::string& po if (res != 0) { log_warning("getaddrinfo failed: "s + gai_strerror(res)); + this->hostname_resolution_failed = true; this->close(); this->on_connection_failed(gai_strerror(res)); return ; diff --git a/louloulibs/network/tcp_socket_handler.hpp b/louloulibs/network/tcp_socket_handler.hpp index 0dde2cf..8069825 100644 --- a/louloulibs/network/tcp_socket_handler.hpp +++ b/louloulibs/network/tcp_socket_handler.hpp @@ -256,6 +256,8 @@ protected: std::string cares_error; #endif // CARES_FOUND + bool hostname_resolution_failed; + private: TCPSocketHandler(const TCPSocketHandler&) = delete; TCPSocketHandler(TCPSocketHandler&&) = delete; -- cgit v1.2.3