Kaynağa Gözat

Fix DNS resolution when cache is invalid.

Fix StreamPeerTCP.connect_to_host return value.
Fabio Alessandrelli 7 yıl önce
ebeveyn
işleme
97757cd1d1
2 değiştirilmiş dosya ile 3 ekleme ve 4 silme
  1. 2 2
      core/io/ip.cpp
  2. 1 2
      core/io/stream_peer_tcp.cpp

+ 2 - 2
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 {

+ 1 - 2
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() {