From 2dfec2ec4d8c0bb4bd806cc2bf9a57f56b0faf60 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Tue, 16 Mar 2021 22:28:39 +0100 Subject: [PATCH 1/2] don't keep 0xFFFFFFFF as a valid addres in case of DNS fail --- tasmota/support.ino | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index b1653ff2a..ff6a0aecf 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -2137,8 +2137,11 @@ void SyslogAsync(bool refresh) { if (mxtime > 0) { uint32_t current_hash = GetHash(SettingsText(SET_SYSLOG_HOST), strlen(SettingsText(SET_SYSLOG_HOST))); if (syslog_host_hash != current_hash) { + IPAddress temp_syslog_host_addr; + int ret = WiFi.hostByName(SettingsText(SET_SYSLOG_HOST), temp_syslog_host_addr); // If sleep enabled this might result in exception so try to do it once using hash + if (!ret) return; syslog_host_hash = current_hash; - WiFi.hostByName(SettingsText(SET_SYSLOG_HOST), syslog_host_addr); // If sleep enabled this might result in exception so try to do it once using hash + syslog_host_addr = temp_syslog_host_addr; } if (!PortUdp.beginPacket(syslog_host_addr, Settings.syslog_port)) { TasmotaGlobal.syslog_level = 0; From 74da6eb0571ba204cfa435f6be6b439e1af927b1 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Wed, 17 Mar 2021 19:45:29 +0100 Subject: [PATCH 2/2] check on hostByName + disable syslog --- tasmota/support.ino | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index ff6a0aecf..800c0a1ca 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -2138,8 +2138,13 @@ void SyslogAsync(bool refresh) { uint32_t current_hash = GetHash(SettingsText(SET_SYSLOG_HOST), strlen(SettingsText(SET_SYSLOG_HOST))); if (syslog_host_hash != current_hash) { IPAddress temp_syslog_host_addr; - int ret = WiFi.hostByName(SettingsText(SET_SYSLOG_HOST), temp_syslog_host_addr); // If sleep enabled this might result in exception so try to do it once using hash - if (!ret) return; + int ok = WiFi.hostByName(SettingsText(SET_SYSLOG_HOST), temp_syslog_host_addr); // If sleep enabled this might result in exception so try to do it once using hash + if (!ok || (0xFFFFFFFF == (uint32_t)temp_syslog_host_addr)) { // 255.255.255.255 is assumed a DNS problem + TasmotaGlobal.syslog_level = 0; + TasmotaGlobal.syslog_timer = SYSLOG_TIMER; + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION "Loghost DNS resolve failed (%s). " D_RETRY_IN " %d " D_UNIT_SECOND), SettingsText(SET_SYSLOG_HOST), SYSLOG_TIMER); + return; + } syslog_host_hash = current_hash; syslog_host_addr = temp_syslog_host_addr; }