mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-04-30 13:42:12 +00:00
Updated code that fixes broken DNS on IPv6 networks
This commit is contained in:
@@ -160,12 +160,23 @@ void debugPrint(byte *buffer, int start, int length);
|
|||||||
|
|
||||||
|
|
||||||
#if defined(ESP32)
|
#if defined(ESP32)
|
||||||
|
uint8_t dnsState = 0;
|
||||||
ip_addr_t dns0;
|
ip_addr_t dns0;
|
||||||
void WiFiEvent(WiFiEvent_t event) {
|
void WiFiEvent(WiFiEvent_t event) {
|
||||||
switch(event) {
|
switch(event) {
|
||||||
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
|
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
|
||||||
const ip_addr_t* dns = dns_getserver(0);
|
const ip_addr_t* dns = dns_getserver(0);
|
||||||
memcpy(&dns0, dns, sizeof(dns0));
|
memcpy(&dns0, dns, sizeof(dns0));
|
||||||
|
|
||||||
|
IPAddress res;
|
||||||
|
int ret = WiFi.hostByName("hub.amsleser.no", res);
|
||||||
|
if(ret == 0) {
|
||||||
|
dnsState = 2;
|
||||||
|
debugI_P(PSTR("No DNS, probably a closed network"));
|
||||||
|
} else {
|
||||||
|
debugI_P(PSTR("DNS is present and working, monitoring"));
|
||||||
|
dnsState = 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -634,7 +645,6 @@ void handleNtpChange() {
|
|||||||
config.ackNtpChange();
|
config.ackNtpChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t dnsState = 0;
|
|
||||||
void handleSystem(unsigned long now) {
|
void handleSystem(unsigned long now) {
|
||||||
unsigned long start, end;
|
unsigned long start, end;
|
||||||
if(now - lastSysupdate > 60000) {
|
if(now - lastSysupdate > 60000) {
|
||||||
@@ -649,20 +659,11 @@ void handleSystem(unsigned long now) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(ESP32)
|
#if defined(ESP32)
|
||||||
if(dnsState != 2) {
|
if(dnsState == 1) {
|
||||||
IPAddress res;
|
const ip_addr_t* dns = dns_getserver(0);
|
||||||
int ret = WiFi.hostByName("hub.amsleser.no", res);
|
if(memcmp(&dns0, dns, sizeof(dns0)) != 0) {
|
||||||
if(ret == 0) {
|
|
||||||
if(dnsState == 0) {
|
|
||||||
dnsState = 2;
|
|
||||||
} else {
|
|
||||||
dns_setserver(0, &dns0);
|
dns_setserver(0, &dns0);
|
||||||
debugI_P(PSTR("Had to reset DNS server"));
|
debugI_P(PSTR("Had to reset DNS server"));
|
||||||
}
|
|
||||||
} else if(ret == 1) {
|
|
||||||
if(dnsState == 0) {
|
|
||||||
dnsState = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user