From 681c22375bdae255fa791a82c3932953d027438e Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Tue, 28 Aug 2018 12:32:04 +0200 Subject: [PATCH] Fix DNS resolution when cache is invalid. Fix StreamPeerTCP.connect_to_host return value. (cherry picked from commit 97757cd1d1b6b3702a47c6f28c200010cee335e4) --- core/io/ip.cpp | 4 ++-- core/io/stream_peer_tcp.cpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/io/ip.cpp b/core/io/ip.cpp index b53d30c7aa4..8d7b77814e6 100644 --- a/core/io/ip.cpp +++ b/core/io/ip.cpp @@ -117,7 +117,7 @@ IP_Address IP::resolve_hostname(const String &p_hostname, IP::Type p_type) { resolver->mutex->lock(); String key = _IP_ResolverPrivate::get_cache_key(p_hostname, p_type); - if (resolver->cache.has(key)) { + if (resolver->cache.has(key) && resolver->cache[key].is_valid()) { IP_Address res = resolver->cache[key]; resolver->mutex->unlock(); return res; @@ -144,7 +144,7 @@ IP::ResolverID IP::resolve_hostname_queue_item(const String &p_hostname, IP::Typ String key = _IP_ResolverPrivate::get_cache_key(p_hostname, p_type); resolver->queue[id].hostname = p_hostname; resolver->queue[id].type = p_type; - if (resolver->cache.has(key)) { + if (resolver->cache.has(key) && resolver->cache[key].is_valid()) { resolver->queue[id].response = resolver->cache[key]; resolver->queue[id].status = IP::RESOLVER_STATUS_DONE; } else { diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp index 9996814bbb5..de722252402 100644 --- a/core/io/stream_peer_tcp.cpp +++ b/core/io/stream_peer_tcp.cpp @@ -43,8 +43,7 @@ Error StreamPeerTCP::_connect(const String &p_address, int p_port) { return ERR_CANT_RESOLVE; } - connect_to_host(ip, p_port); - return OK; + return connect_to_host(ip, p_port); } void StreamPeerTCP::_bind_methods() {