Refactor WifiHostByName()

This commit is contained in:
Theo Arends 2022-08-29 14:31:05 +02:00
parent b502b84189
commit 23ba25c665

View File

@ -819,17 +819,23 @@ void wifiKeepAlive(void) {
bool WifiHostByName(const char* aHostname, IPAddress& aResult) { bool WifiHostByName(const char* aHostname, IPAddress& aResult) {
#ifdef ESP8266 #ifdef ESP8266
if (WiFi.hostByName(aHostname, aResult, Settings->dns_timeout)) { if (WiFi.hostByName(aHostname, aResult, Settings->dns_timeout)) {
return true; // Host name resolved
if (0xFFFFFFFF != (uint32_t)aResult) {
return true;
}
} }
#else #else
// DnsClient can't do one-shot mDNS queries so use WiFi.hostByName() for *.local // DnsClient can't do one-shot mDNS queries so use WiFi.hostByName() for *.local
size_t hostname_len = strlen(aHostname); size_t hostname_len = strlen(aHostname);
if (strstr_P(aHostname, PSTR(".local")) == &aHostname[hostname_len] - 6) { if (strstr_P(aHostname, PSTR(".local")) == &aHostname[hostname_len] - 6) {
if (WiFi.hostByName(aHostname, aResult)) { if (WiFi.hostByName(aHostname, aResult)) {
return true; // Host name resolved
if (0xFFFFFFFF != (uint32_t)aResult) {
return true;
}
} }
} else { } else {
// Use this instead of WiFi.hostByName or connect(host_name,.. to block less if DNS server is not found // Use this instead of WiFi.hostByName or connect(host_name,.. to block less if DNS server is not found
uint32_t dns_address = (!TasmotaGlobal.global_state.eth_down) ? Settings->eth_ipv4_address[3] : Settings->ipv4_address[3]; uint32_t dns_address = (!TasmotaGlobal.global_state.eth_down) ? Settings->eth_ipv4_address[3] : Settings->ipv4_address[3];
DnsClient.begin((IPAddress)dns_address); DnsClient.begin((IPAddress)dns_address);
if (1 == DnsClient.getHostByName(aHostname, aResult)) { if (1 == DnsClient.getHostByName(aHostname, aResult)) {